leetcode 困难题 1553. 吃掉 N 个橘子的最少天数-Minimum Number of Days to Eat N Oranges

张开发
2026/4/4 2:49:11 15 分钟阅读
leetcode 困难题 1553. 吃掉 N 个橘子的最少天数-Minimum Number of Days to Eat N Oranges
Problem: 1553. 吃掉 N 个橘子的最少天数-Minimum Number of Days to Eat N Oranges两种方案的方案1: 记忆化深度优先搜索方案2: 动态规划的呢方案1: 查找3种选择拿到最短的时间若当前时间h mi 200则返回largemem数组记忆已经得到的最小值方案2: 动态规划的但超时了的dp[i]就是当i个oranges的最少时间递推公式是dp[i] min(dp[i-1], dp[i/3], dp[i/2]) 1Codeclass Solution { public: int mi INT_MAX/10; const int large INT_MAX / 10; unordered_mapint, int mem; int dfs(int n, int h) { if(n 0) { mi min(h, mi); return 0; } if(h mi 200) return large; if(mem.count(n) ! 0) return mem[n]; int r1large, r2large, r3, mimi; if(n%30) r1 dfs(n / 3, h 1); if((n1)0) r2 dfs(n / 2, h 1); r3 dfs(n - 1, h 1); mimi min({r1, r2, r3}) 1; mem[n] mimi; return mimi; } int minDays(int n) { int ret dfs(n, 0); return ret; // int mimimi; // vectorshort dp(n1, 0); // dp[1] 1; // for(int i 2; i n; i) { // mimimi dp[i-1] 1; // if(i%30) mimimi min(mimimi, dp[i/3] 1); // if((i1)0) mimimi min(mimimi, dp[i/2] 1); // dp[i] mimimi; // } // return dp[n]; } };动态规划的Codeclass Solution { public: int minDays(int n) { int mimimi; vectorshort dp(n1, 0); dp[1] 1; for(int i 2; i n; i) { mimimi dp[i-1] 1; if(i%30) mimimi min(mimimi, dp[i/3] 1); if((i1)0) mimimi min(mimimi, dp[i/2] 1); dp[i] mimimi; } return dp[n]; } };

更多文章