刷题记录合辑
标题不含题号,题号写在正文与 description 中。
167. 两数之和
思路
尝试1 - 通过: 双指针模板题
- 已经非递减,那么指针向右移动会让和变大, 指针向左移动会让和变小
- 每次更新都是将快慢指针一起更新然后往回退slow,配合剪枝减少比较数量
- 复杂度
O(n^2)
题解1: 正统双指针
- 双指针出初始化为0和len(numbers)-1
- 这个的正确性我没搞懂,我现在搞懂了,需要复习
题解2: 二分
1 | class Solution: |
1 | ``` |
总结
392. 判断子序列
思路
尝试与题解: 双指针
进阶题思路: 预处理每个点下一个字母出现
1 | class Solution: |
1 | ``` |
总结
134. 加油站
思路
尝试1: 贪心算法,一旦出现当前点不足的情况直接结束,从结束点重新开始
- 只要能走够size步说明成功绕一圈
- 如果start再次到0说明没法走了
主要的问题是我没法快速判断如果sum(gas) > sum(cost)就一定存在解
1 | class Solution: |
1 | ``` |
总结
135. 分发糖果
思路
尝试1: 统计上升序列,错误因为只保证了右边的数量符合要求,左边的没有保证
尝试2: 每次找到最小的然后将所有减掉最小的,然后删掉的左右两边都加一,但是这样的复杂度太差了
尝试3: 用dp,但是dp要保证后边的状态是由前边的状态推导得到
题解 - 贪心:,统计上升序列然后选择较大的来实现即可
1 | class Solution: |
1 | ``` |
总结
相关题目
*
知识点小结
*
模板
思路
1 |
1 | ``` |
总结