leetcode:Multiply Strings +…

本文解析了JumpGame系列算法题的解决思路,包括使用动态规划和贪心算法的不同之处,并对比了二者的时间复杂度和效率。同时介绍了如何利用广度优先搜索(BFS)来寻找最少步数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

eMultiply Strings:
依然是模拟题,求两个字符串表示的大数乘积。其实只要模拟乘法的过程即可:数一第i位和数二第j位的乘积,是累加到答案的第i+j位。感觉模拟题还是要多点耐心,想清楚问题的关键即可。

Jump Game:
一开始想到用DP,从尾部开始往前,dp[i]=true的条件是它能到之后的任一true的位置。时间复杂度o(n),大数据测试时超时。换了用贪心,从后往前,每次只记录当前位置是否可以到达reach点,如果可以就用当前位置 作为新的reach点,如果nums[0]是reach点,则成功。
这里就体现出DP和贪心一个最大的区别,贪心是每一步的最优解一定依赖上一步的最优解,因此不断更新reach点,就能以线性的复杂度搜索完成。而DP则是全局最优解中一定包含某个局部最优解,但不一定包含上一步的局部最优解,因此需要重新搜索之前的所有解,从而导致超时。

Jump Game II:
这个区别在于,一定能跳到终点,求需要的最小步数。一开始只往贪心方面想,看了提示才知道要加上BFS。从第一个点开始,把该点能到达的所有点都入队,这些点的步数为1(起始点步数为0),然后逐个出队,一旦有个点能到达,必定是最小步数(因为之后的点步数必定大于等于它,运用了局部最优解的贪心思想)。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值