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);
    }
}

 

posted @ 2020-08-16 15:49  Sexyomaru  阅读(120)  评论(0编辑  收藏  举报