5490. 吃掉 N 个橘子的最少天数(贪心+记忆化回溯)

 

class Solution {
    Map<Integer, Integer> map = new HashMap(); 
    public int minDays(int n) {
        if(n == 0) return 0;
        if(!map.containsKey(n)){
            int ans = n; // d第一种选择
            int half = n / 2;
            int third = n / 3;                     // 余数的橘子先吃
            ans = Math.min(ans, minDays(half) + 1 + n - half * 2); // 第二种
            ans = Math.min(ans, minDays(third) + 1 + n - third * 3); // 第三种
            map.put(n, ans);
        }
        return map.get(n);
    }
}
原文地址:https://www.cnblogs.com/yonezu/p/13512817.html