leetcode 好题分析

本文详述了常见的算法分析方法,如调整法、简化条件、反证法、分类讨论和贪心策略,并结合LeetCode题目实例,如397、435、316和11题,阐述如何运用这些技巧。同时强调了猜想和反悔操作在解决问题中的重要性,以及在动态规划和区间问题中如何转换思维。

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

常用分析方法:

1.调整法:

首先是分析要求的结果是和什么量有关的,然后从每个变量的最值进行调整。

2.简化条件看看规律

3.考虑最后的状态并思考充分条件。(反证法)

4.观察题目的单调性.

5.分类讨论:一般贪心我们都是反证法,但是有时候分类讨论是管用的。

6.猜想很重要,因为在验证猜想的过程中我们能发现一些新东西能指明方向。

常用技巧:

反悔操作

差分:这个技巧主要是用于将问题进行转化。

后向操作:这个一般用于动态规划,本质上和差分差不多把要求的表达式写出来,然后变型然后我们每步只求一个差值。

如果正向考虑不行就反向考虑。

leetcode397

分类讨论贪心。或者是dp.

leetcode435

这题求max那么我们可以考虑min.还有就是如果要求和某个区间不相交的区间数也可以反向考虑。考虑要求区间的左边有多少个区间的右端点,考虑要求区间的右边有多少个区间的左端点。然后用总数减去就可以了。

leetcode316

此题我先开始用调整法,发现最后结果和字母的类型以及所处位置相关所以我们考虑先统计每个字母的位置然后从小到大,从右到左放字母。最后发现做法很复杂且不一定做出来。

不过发现最后的状态是如果s[i+1]<s[i]那么应该考虑把s[i]放后面除非后面没有和s[i]一样的字母了,所以考虑用栈。

leetcode11

首先考虑最后的状态很明显确定最大值的最左边的那块板的左边一定不会有比它还高的板子了

最右边板子的右边同理。然后分析出需要考虑的点集合就是一个山型最大值在中间。

从最左和最右开始就好了。这题本质上就是用了个反证法

leetcode517

猜想很重要还有就是要会分类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值