LeetCode 1553.吃掉N个橘子的最少天数

【Leetcode-算法】994. 腐烂的橘子(C++) 在给定的网格中,每个单元格可以有以下三个值之一: 值0代表空单元格; 值1代表新鲜橘子; 值2代表腐烂的橘子。 每分钟,任何与腐烂的橘子(在 4 个正方向上)相邻的新鲜橘子都会腐烂。 返回直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。如果不可能,返回-1。 思路: 比较基础的BFS。建立一个队列存放腐烂橘子的位置,并记录新鲜橘子的个数。循环过程中若腐烂,则fresh--,且把刚被腐烂的橘子加入到队列中,每搜完一层将记录最短时间的变量min++。直到队列为空。最后... 阅读详情

题目链接:LeetCode 1553.吃掉N个橘子的最少天数

题意:

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

吃掉一个橘子。
如果剩余橘子数 n 能被 2 整除,那么你可以吃掉 n/2 个橘子。
如果剩余橘子数 n 能被 3 整除,那么你可以吃掉 2*(n/3) 个橘子。
每天你只能从以上 3 种方案中选择一种方案。

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

 

解题思路:

   从别人那里学到的记忆化搜索(本来以为是DP,看了数据觉得是贪心....)

能除3就除3,能除2就除2,不行减一,取最小值

class Solution {

    /**
     * @param Integer $n
     * @return Integer
     */
    public  $a = array();
    function minDays($n) {
        return $this->get($n);
    }
    function get($n){
        //echo "n = ".$n."\n";
        if($n == 1){
            return 1;
        } elseif ($n <= 3){
            return 2;
        } elseif(array_key_exists($n, $this->a)){  // 此处这样用的原因是为后一次的get减少次数
            return $this->a[$n];
        } else{
            $this->a[$n] = min($this->get(intval($n/2) )+ $n % 2 + 1, $this->get(intval($n/3) )+ $n % 3 + 1);
            return $this->a[$n];
        }
    }
}
【微软算法面试高频题】吃掉N个橘子的最少天数 微软和谷歌的几个大佬组织了一个面试刷题群,可以加管理员VX:sxxzs3998(备注优快云),进群参与讨论和直播 1. 题目 厨房里总共有 n 个橘子,你决定每一天选择如下方式之一吃这些橘子: 吃掉一个橘子。 如果剩余橘子数 n 能被 2 整除,那么你可以吃掉 n/2 个橘子。 如果剩余橘子数 n 能被 3 整除,那么你可以吃掉 2*(n/3) 个橘子。 每天你只能从以上 3 种方案中选择一种方案。 请你返回吃掉所有 n 个橘子的最少天数。 示例 1: 输入:n = 10 输出:4 解释:你总共有 1 阅读详情

相关推荐

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

文章目录leetcode1553. 吃掉 N 个橘子的最少天数方法:递归+记忆化思路:代码:Python3:cpp:结果: leetcode1553. 吃掉 N 个橘子的最少天数 厨房里总共有 n 个橘子,你决定每一天选择如下方式之一吃这些橘子: 吃掉一个橘子。 如果剩余橘子数 n 能被 2 整除,那么你可以吃掉 n/2 个橘子。 如果剩余橘子数 n 能被 3 整除,那么你可以吃掉 2*(n/3) 个橘子。 每天你只能从以上 3 种方案中选择一种方案。 请你返回吃掉所有 n 个橘子的最少天数。 示例 1

weixin_43422466的博客 593

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

【力扣】1553. 吃掉 N 个橘子的最少天数 1、题目描述 厨房里总共有 n 个橘子,你决定每一天选择如下方式之一吃这些橘子: 吃掉一个橘子。 如果剩余橘子数 n 能被 2 整除,那么你可以吃掉 n/2 个橘子。 如果剩余橘子数 n 能被 3 整除,那么你可以吃掉 2*(n/3) 个橘子。 每天你只能从以上 3 种方案中选择一种方案。 请你返回吃掉所有 n 个橘子的最少天数。 示例 1: 输入:n = 10 输出:4 解释:你总共有 10 个橘子。 第 1 天:吃 1 个橘子,剩余橘子数 10 - 1 =

qq_40855100的博客 808

FreeCAD地下管道自动化建模实战:Python脚本从入门到导出OBJ

本文详细介绍了如何利用FreeCAD的Python API实现地下管道的自动化建模,从数据处理到模型导出OBJ格式的全流程。通过实战案例和代码示例,展示了圆形和矩形截面管道的创建方法,以及法兰连接等特殊处理技巧,大幅提升工程设计效率。

ff678的博客 248

Leetcode | 5490吃掉N个橘子的最少天数 java 5ms 简单思路

厨房里总共有 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*(

zxxc111的博客 569

微信图片.dat文件解密实战:用Python一键转PNG(附完整代码)

本文详细介绍了如何通过Python解密微信图片.dat文件并转换为PNG格式的完整教程。文章深入解析了微信.dat文件的异或加密原理,提供了自动检测密钥的Python脚本,并分享了批量解密和性能优化的实用技巧,帮助用户轻松恢复和整理微信聊天图片。

weixin_29096377的博客 465

MQTT与物联网平台(一):基础知识和设备接入物联网平台的实现(以华为云为例)

本文简单介绍了MQTT的基础知识和使用方法,以蓝牙WIFI双模芯片W801作为硬件设备,接入到华为云。

weixin_50622833的博客 1万+

力扣 LeetCode 1553. 吃掉 N 个橘子的最少天数

一开始用了动态规划,时间复杂度为n,结果超时了,然后看的题解,看到用的记忆化搜索。 代码其他的都好理解,就一句 min(minDays(n/2)+1+n%2,minDays(n/3)+1+n%3) 需要解释一下,首先,要变为最小天数,意味着橘子要尽可能多的除以2或者除以3,那么自然而然就想到怎么让橘子变为2的倍数或者3的倍数,变为2的倍数需要的步数为n%2,然后变为n/2又需要一步,变为3的倍数同理,然后通过递归,可以极大的提升效率,同时利用map记录出现过的数字,进一步提升速度。 class Sol..

weixin_43304992的博客 371

[HQChart教程] 去掉“仅学习使用”文字提示的小技巧

最近用 HQChart 做图表时,发现左下角有“仅学习使用”的字样。这种水印虽然是默认的,但如果要展示给客户,可能会显得不够专业。还好,这个问题很好解决,只需要简单修改一下配置。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 598

天数减少一天_leetcode第202周赛第四题leetcode1553. 吃掉 N 个橘子的最少天数

leetcode1553. 吃掉 N 个橘子的最少天数厨房里总共有 n 个橘子,你决定每一天选择如下方式之一吃这些橘子:吃掉一个橘子。如果剩余橘子数 n 能被 2 整除,那么你可以吃掉 n/2 个橘子。如果剩余橘子数 n 能被 3 整除,那么你可以吃掉 2*(n/3) 个橘子。每天你只能从以上 3 种方案中选择一种方案。请你返回吃掉所有 n 个橘子的最少天数。示例 1:输入:n = 10 输出:4...

weixin_33660045的博客 311

倒立摆的PLC控制(模型分析+ SCL源代码)

首先简单介绍下倒立摆模型,下面这幅图是MATLAB网站上的倒立摆模型,下面我们利用牛顿第二运动定律建立摆杆的运动方程。

RXXW_Dor的博客 3333

【Claude Code】Unable to connect to API 报错原因与排查解决全流程

深入分析 Claude Code 中 Unable to connect to API 系列报错的根因,涵盖 ECONNREFUSED、ECONNRESET、ETIMEDOUT 等 6 种变体,提供从网络连通性检测、代理配置到 LLM 网关路由的完整排查路径,帮助开发者快速恢复 Claude Code 的正常使用。

多媒体编程、网络编程、系统编程、网络安全编程、驱动编程 2850

【LeetCode:1553. 吃掉 N 个橘子的最少天数 + 递归】

【LeetCode:1553. 吃掉 N 个橘子的最少天数 + 递归】厨房里总共有 n 个橘子,你决定每一天选择如下方式之一吃这些橘子: 吃掉一个橘子。 如果剩余橘子数 n 能被 2 整除,那么你可以吃掉 n/2 个橘子。 如果剩余橘子数 n 能被 3 整除,那么你可以吃掉 2*(n/3) 个橘子。 每天你只能从以上 3 种方案中选择一种方案。 请你返回吃掉所有 n 个橘子的最少天数。

Coder_ljw的博客 1248

PCB仿真软件:Altium Designer_(15).AltiumDesigner的版本控制与项目管理

在进行PCB设计时,版本控制和项目管理是确保设计质量和团队协作效率的关键。Altium Designer 提供了强大的版本控制和项目管理功能,可以帮助设计团队更好地管理和维护项目。本节将详细介绍如何在Altium Designer中进行版本控制和项目管理,包括如何使用版本控制系统、如何管理项目文件、如何进行团队协作等。

kkchenjj的博客 1202

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

文章目录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

Michael是个半路程序员 1893

Oracle 查看 rman 备份情况 SQL 语句

每天一个 DBA 小知识,助你更进一步!

LuciferLiu_DBA 3119

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

LeetCode 1553. 吃掉 N 个橘子的最少天数

目录结构 1.题目 2.题解 1.题目 厨房里总共有 n个橘子,你决定每一天选择如下方式之一吃这些橘子: 吃掉一个橘子。 如果剩余橘子数 n能被 2 整除,那么你可以吃掉 n/2 个橘子。 如果剩余橘子数n能被 3 整除,那么你可以吃掉 2*(n/3) 个橘子。 每天你只能从以上 3 种方案中选择一种方案。 请你返回吃掉所有 n个橘子的最少天数。 示例: 输入:n = 10 输出:4 解释:你总共有 10 个橘子。 第 1 天:吃 1 个橘子,剩余橘子数 10 - 1 = 9。 ...

HarvestWu的博客 308

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

力扣:1553. 吃掉 N 个橘子的最少天数(记忆化搜索,Dijkstra解法)

在做优化的过程中就自然想到了记忆化搜索,既然n可以向下递归到n-1,n/2,n/3,就说明吃掉n的最少天数依赖于n-1,n/2,n/3这3者的数值,那么就可以设置记忆化数组a,a[i]表示吃掉数量为i的橘子至少需要多少天。这个题拿到手,一眼就能想到dfs搜索的解法,就是分3种情况 dfs(n-1), dfs(n/2), dfs(n/3)一直递归,直到n=0,对比递归次数获取最少次数,但是显然超限。第 3 天:吃 2 个橘子,剩余橘子数 3 - 2*(3/3) = 3 - 2 = 1。

xyk050216的博客 650

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

leetcode【困难】1553、吃掉 N 个橘子的最少天数

厨房里总共有 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

qq_40707462的博客 6342

力扣 : 1553. 吃掉 N 个橘子的最少天数 (贪心 递归)

贪心算法练习

punchlinezhy的博客 269

LeetCode 1553 吃掉N个橘子的最少天数

厨房里总共有 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)

麦格芬230的博客 418

LeetCode 每日一题 ---- 【1553.吃掉 N 个橘子的最少天数】

前两天给树浇水,原来浇的是橘子树哇。今天直接来了个大的【困难】这个时间复杂度比较麻烦。

是微风,是晚霞,是无可替代 291

(nice!!!)LeetCode 1553. 吃掉 N 个橘子的最少天数(记忆化搜索dfs、数学)

【代码】LeetCode 1553. 吃掉 N 个橘子的最少天数(记忆化搜索dfs、数学)

记录一些刷过的题并分享学习心得 424

力扣提交未通过题目重写-6 1553. 吃掉 N 个橘子的最少天数

贪心

yu_duan_hun的博客 1272

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

吃掉 N 个橘子的最少天数 厨房里总共有 n 个橘子,你决定每一天选择如下方式之一吃这些橘子: 吃掉一个橘子。 如果剩余橘子数 n 能被 2 整除,那么你可以吃掉 n/2 个橘子。 如果剩余橘子数 n 能被 3 整除,那么你可以吃掉 2*(n/3) 个橘子。 每天你只能从以上 3 种方案中选择一种方案。 请你返回吃掉所有 n 个橘子的最少天数。 示例 1: 输入:n = 10 输出:4 解释:你总共有 10 个橘子。 第 1 天:吃 1 个橘子,剩余橘子数 10 - 1 = 9。 第 2 天:吃 6 个.

qq_33859479的博客 344

千问 LeetCode 1553.吃掉 N 个橘子的最少天数 public int minDays(int n)

对于除以 2:如果 n 不能被 2 整除,我们只需要先通过 n % 2 天(每天吃 1 个),让剩下的橘子数量变成 2 的倍数,然后花 1 天时间吃掉一半。- 对于除以 3:同理,先通过 n % 3 天(每天吃 1 个),让剩下的橘子变成 3 的倍数,然后花 1 天时间吃掉三分之二。// 方案1:先吃掉 n%2 个橘子(每天1个),使剩余橘子能被2整除,然后执行除以2的操作。// 方案2:先吃掉 n%3 个橘子(每天1个),使剩余橘子能被3整除,然后执行除以3的操作。

m0_37843156的博客 94

LeetCode 1553. 吃掉 N 个橘子的最少天数

难度:困难。 标签:动态规划。 由题知1 <= n <= 2*10^9,因此使用自底向上的动态规划方法肯定会超时。 因此该题采用由上而下的深度优先搜索,但是使用map存储历史值,然后进行遍历还是超时了。需要想到方法进行剪枝。 超时代码: class Solution { map<int, int> data; int result = INT_MAX; void dfs(int k, int len, int m){ if(len >

almost_afei的博客 276
上一篇: LeetCode 796.旋转字符串
下一篇: LeetCode 733.图像渲染
error0318
博客等级 码龄9年 57粉丝 515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值