归档
Growth | Study
08
17
第四章:如何运用二分查找算法 第四章:如何运用二分查找算法
labuladong 如何运用二分查找算法 875. 爱吃香蕉的珂珂 canFinish() 函数:当前速度下,能吃完的小时数(注意要向上整除) 最小速度为1,最大速度为数组中最大值。因此利用二分查找框架求h(h相当于二分查找中的目
2020-08-17
17
第四章:如何高效寻找素数 第四章:如何高效寻找素数
labuladong如何高效寻找素数 204. 计数质数统计所有小于非负整数 n 的质数的数量 初始化时,给每个位置立一个flag,并初始化为1 遍历时,对于i而言: 如果这个位置的flag为1,说明数字 i 没有被比 i 小的数整除过
2020-08-17
17
第三章:递归详解 第三章:递归详解
labuladong 递归详解 437. 路径总和 III方法1:递归 递归时,想清楚: 这个函数是干什么的?不要跳进递归,没用。 这个函数参数中的变量是什么?(函数的参数中可以传递这个变量) 得到函数的递归结果,你应该干什么 (比如前序
2020-08-17
16
第三章:信封嵌套问题 第三章:信封嵌套问题
labuladong 信封嵌套问题 354. 俄罗斯套娃信封问题 先对宽度(第一个数)进行升序排序,宽度相同时,对高度(第二个数)降序排序 envelopes=sorted(envelopes,key=lambda x:(x[0],-x[
2020-08-16
13
python装饰器 python装饰器
装饰器examplePython Decorators in 15 Minutes 什么是装饰器? python装饰器用于装饰函数。可以在保留原函数功能的条件下,赋予该函数更丰富的功能(而无需改动原函数) 为什么要用装饰器? 可以更便
2020-08-13
12
第三章:前缀和技巧 第三章:前缀和技巧
labuladong 前缀和技巧 560. 和为K的子数组方法1:前缀和 (暴力超时)保存一个数组的前缀和,然后利用差分法得出任意区间段的和 class Solution: def subarraySum(self, nums: L
2020-08-12
12
第三章:双指针技巧总结 第三章:双指针技巧总结
labuladong 双指针技巧总结 利用快慢指针或者左右指针解决问题 141. 环形链表利用快慢指针,一开始都指到头结点处,然后每次快指针走两步,慢指针。若最后相遇了,说明有环 # Definition for singly-linked
2020-08-12
12
第三章:回溯算法最佳实践:括号生成 第三章:回溯算法最佳实践:括号生成
labuladong 回溯算法最佳实践:括号生成 22. 括号生成问题转化为:现在有 2n 个位置,每个位置可以放置字符 ‘(‘ 或者 ‘)’,求生成所有可能的并且有效的括号组合 可用的左括号数量为 left 个,可用的右括号数量为 rg
2020-08-12
12
第二章:递归反转链表的一部分 第二章:递归反转链表的一部分
labuladong 递归反转链表的一部分 92. 反转链表 II方法1.递归反转链表 (只是说明递归方法的思想,本题优解应参考方法2) 先看例题206. 反转整个链表 对于递归算法,最重要的就是明确递归函数实现的功能(而不是跳进递归中
2020-08-12
05
第二章:特殊数据结构:单调队列 第二章:特殊数据结构:单调队列
labuladong 特殊数据结构:单调队列 239. 滑动窗口最大值方法1:更新滑动窗口法(暴力遍历,超时) 滑动窗口没有完全进入数组时,把数据加入窗口中 窗口完全进入数组后,保存最大值,同时弹出窗口最左侧的元素(即,右边进,左边出,更新
2020-08-05
05
第二章:特殊数据结构:单调栈 第二章:特殊数据结构:单调栈
labuladong 特殊数据结构:单调栈 栈(stack)是很简单的一种数据结构,先进后出的逻辑顺序,符合某些问题的特点,比如说函数调用栈。单调栈实际上就是栈,只是利用了一些巧妙的逻辑,使得每次新元素入栈后,栈内的元素都保持有序(单调递
2020-08-05
02
第二章:如何计算完全二叉树的节点数 第二章:如何计算完全二叉树的节点数
labuladong 如何计算完全二叉树的节点数 222. 完全二叉树的节点个数 完全二叉树都是紧凑靠左排列的 满二叉树每一层都是满的 (除底层的叶子节点外,左右孩子都有),是一种特殊的完全二叉树 遍历二叉树节点时: 若是普通的二叉树,
2020-08-02
3 / 6