文章目录

  • 1. 题目
  • 2. 解题

1. 题目

厨房里总共有 n 个橘子,你决定每一天选择如下方式之一吃这些橘子:

  • 吃掉一个橘子。
  • 如果剩余橘子数 n 能被 2 整除,那么你可以吃掉 n/2 个橘子。
  • 如果剩余橘子数 n 能被 3 整除,那么你可以吃掉 2*(n/3) 个橘子。

每天你只能从以上 3 种方案中选择一种方案。

请你返回吃掉所有 n 个橘子的最少天数

示例 1:
输入:n = 10
输出:4
解释:你总共有 10 个橘子。
第 1 天:吃 1 个橘子,剩余橘子数 10 - 1 = 9。
第 2 天:吃 6 个橘子,剩余橘子数 9 - 2*(9/3) = 9 - 6 = 3。(9 可以被 3 整除)
第 3 天:吃 2 个橘子,剩余橘子数 3 - 2*(3/3) = 3 - 2 = 1。
第 4 天:吃掉最后 1 个橘子,剩余橘子数 1 - 1 = 0。
你需要至少 4 天吃掉 10 个橘子。示例 2:
输入:n = 6
输出:3
解释:你总共有 6 个橘子。
第 1 天:吃 3 个橘子,剩余橘子数 6 - 6/2 = 6 - 3 = 3。(6 可以被 2 整除)
第 2 天:吃 2 个橘子,剩余橘子数 3 - 2*(3/3) = 3 - 2 = 1。(3 可以被 3 整除)
第 3 天:吃掉剩余 1 个橘子,剩余橘子数 1 - 1 = 0。
你至少需要 3 天吃掉 6 个橘子。示例 3:
输入:n = 1
输出:1示例 4:
输入:n = 56
输出:6提示:
1 <= n <= 2*10^9

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/minimum-number-of-days-to-eat-n-oranges
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

110 / 176 个通过测试用例,看数据 109, O(n) 都要超时

class Solution {public:int minDays(int n) {vector<int> dp(n+1, INT_MAX);dp[0] = 0;for(int i = 0; i < n; ++i){if(dp[i] == INT_MAX)continue;dp[i+1] = min(dp[i+1], dp[i]+1);//吃一个if((n-i)%2 == 0)dp[i+(n-i)/2] = min(dp[i+(n-i)/2], dp[i]+1);if((n-i)%3 == 0)dp[i+2*(n-i)/3] = min(dp[i+2*(n-i)/3], dp[i]+1);}return dp[n];}
};
  • BFS 广度优先搜索,vis记录访问过的,避免重复访问
class Solution {public:int minDays(int n) {unordered_set<int> vis;queue<int> q;q.push(0);int d = 0, size, eat;while(!q.empty()){size = q.size();while(size--){eat = q.front();q.pop();if(eat == n)return d;if(!vis.count(eat+1)){q.push(eat+1);vis.insert(eat+1);}if((n-eat)%2 == 0 && !vis.count(eat+(n-eat)/2)){q.push(eat+(n-eat)/2);vis.insert(eat+(n-eat)/2);}if((n-eat)%3 == 0 && !vis.count(eat+(n-eat)/3*2)){q.push(eat+(n-eat)/3*2);//注意先除再乘,避免溢出vis.insert(eat+(n-eat)/3*2);}}d++;}return -1;}
};

152 ms 22 MB


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!

LeetCode 1553. 吃掉 N 个橘子的最少天数(BFS)相关推荐

  1. 力扣 1553. 吃掉 N 个橘子的最少天数 记忆化DFS|记忆化BFS|剪枝

    吃掉 N 个橘子的最少天数 厨房里总共有 n 个橘子,你决定每一天选择如下方式之一吃这些橘子: 吃掉一个橘子. 如果剩余橘子数 n 能被 2 整除,那么你可以吃掉 n/2 个橘子. 如果剩余橘子数 n ...

  2. Leetcode1553. 吃掉 N 个橘子的最少天数

    [力扣]1553. 吃掉 N 个橘子的最少天数 1.题目描述 厨房里总共有 n 个橘子,你决定每一天选择如下方式之一吃这些橘子: 吃掉一个橘子. 如果剩余橘子数 n 能被 2 整除,那么你可以吃掉 n ...

  3. leetcode1553. 吃掉 N 个橘子的最少天数(Python3、c++)

    文章目录 leetcode1553. 吃掉 N 个橘子的最少天数 方法:递归+记忆化 思路: 代码: Python3: cpp: 结果: leetcode1553. 吃掉 N 个橘子的最少天数 厨房里 ...

  4. LeetCode 1568. 使陆地分离的最少天数(DFS)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个由若干 0 和 1 组成的二维网格 grid ,其中 0 表示水,而 1 表示陆地. 岛屿由水平方向或竖直方向上相邻的 1 (陆地)连接形成. 如 ...

  5. C++描述 LeetCode 5676. 生成交替二进制字符串的最少操作数

    C++描述 LeetCode 5676. 生成交替二进制字符串的最少操作数   大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博主目前仅在C ...

  6. Leetcode 1482题 制作 m 束花所需的最少天数

    Leetcode 1482题 制作 m 束花所需的最少天数 链接: 制作 m 束花所需的最少天数. 提交结果: 解题思路 本题主要采用二分查找的解题思路,范围为0到天数最大值,根据是否能组成相应数量的 ...

  7. 【LeetCode力扣】5814. 新增的最少台阶数 (第250场周赛)蓝湖专场

    [LeetCode力扣]5814. 新增的最少台阶数 题目 代码 题目 给你一个 严格递增 的整数数组rungs,用于表示梯子上每一台阶的 高度 .当前你正站在高度为 0 的地板上,并打算爬到最后一个 ...

  8. [LeetCode] 513. Find Bottom Left Tree Value_ Medium tag: BFS

    Given a binary tree, find the leftmost value in the last row of the tree. Example 1: Input:2/ \1 3Ou ...

  9. leetode题库5438--制作 m 束花所需的最少天数

    5438. 制作 m 束花所需的最少天数 给你一个整数数组 bloomDay,以及两个整数 m 和 k . 现需要制作 m 束花.制作花束时,需要使用花园中 相邻的 k 朵花 . 花园中有 n 朵花, ...

最新文章

  1. Mac OS Terminal Commands
  2. [收藏]比较著名的.net技术论坛网址(含国外的)
  3. vue 按需加载,换存,导航守卫
  4. PuTTY 设置Serial(ubuntu)
  5. photoshop是用什么编程语言开发的_为什么中国开发不出流行的操作系统和编程语言?...
  6. git中文件的三种状态
  7. 【Java】不使用比较运算符构造max()和min()
  8. grep、sed命令使用记录
  9. Android进阶笔记18:Android 获取Button的高度、宽度、坐标值
  10. eeupdate使用说明_Fedora如何修改网络接口名称?Fedora修改网络接口名称的方法
  11. 设计模式(博客园精华集)
  12. 兼容IE浏览器下载文件
  13. python无法正常启动0xc000007b_应用程序无法正常启动(0xc000007b)。
  14. echarts 坐标自适应,实现 ECharts 图表自适应
  15. 导出收藏到html是什么意思,详细说明如何导出浏览器的收藏夹
  16. 大师的话一语道破.强烈建议阅读
  17. 运筹学基础,这个可以懂(上)
  18. 污染源在线监控_污染源在线监控数采仪
  19. 代小程序实现业务之代码管理
  20. 视频捕获SDK.Net v12版(Carck)

热门文章

  1. Golang语言写99乘法表-双重for循环
  2. CentOS下的Mysql的安装和使用
  3. ansible inventory 主机清单配置
  4. 什么可以作为gcroot_面包果既能当水果又可以作为粮食,国内却无法普及,这是为什么?...
  5. 字符设备驱动高级篇6——内核提供的读写寄存器接口
  6. s5pv210——AD转换
  7. php抓取动态数据,php+ajax实现无刷新动态加载数据技术
  8. 面试题25:合并两个排序的链表
  9. SSM框架的搭建学习(1)---MyBatis的环境搭建
  10. 【收集】Python 微优化