[20210301~20210301] 303. 区域和检索 - 数组不可变
[20210302~20210302] 304. 二维区域和检索 - 矩阵不可变
[20210303~20210303] 338. 比特位计数
[20210304~20210304] 354. 俄罗斯套娃信封问题
[20210304~20210304] 300. 最长递增子序列
[20210305~20210305] 232. 用栈实现队列
[20210305~20210305] 225. 用队列实现栈
[20210307~20210307] 131. 分割回文串
[20210309~20210309] 1047. 删除字符串中的所有相邻重复项
[20210310~20210310] 224. 基本计算器
[20210315~20210315] 54. 螺旋矩阵
[20210316~20210316] 59. 螺旋矩阵 II
[20210316~20210316] 98.验证二叉搜索树
[20210317~20210317] 497. 非重叠矩形中的随机点
[20210317~20210317] 398. 随机数索引
[20210318~20210318] 206. 反转链表
[20210319~20210319] 1603. 设计停车系统
[20210320~20210320] 150. 逆波兰表达式求值
[20210322~20210322] 191. 位1的个数
3.1
3.2
3.3
3.4 动态规划
😭 依然不会做,考虑太简单了,需要多刷动态规划
🥇354. 俄罗斯套娃信封问题
最长上升子序列是套娃信封的先导,但最长上升子序列还没理解🙄🙄🙄
🥈300. 最长递增子序列@
3.5 栈模拟队列
😽这个就没问题了,赶紧整理前面的动态规划吧
🥉232. 用栈实现队列
队列实现栈是真的简单,别想太多了!
🥉225. 用队列实现栈
3.6
3.7
回溯+动态规划难死了,先弄明白回溯吧
3.8
3.9
栈的应用,想到栈就超级简单!
3.10
依然还是栈,可能有点难理解。其实很简单:
- 没遇到左括号之前,就根据加减号计算好了
- 遇到左括号的时候,把左括号之前的总和、左括号前面的符号存到栈里面。把res(存总和变量)和sign(符号标记)分别变成0、1(初始值)
- 没遇到右括号时,继续按照加减号计算
- 遇到右括号的时候,说明括号里面的计算完了。式子的综合应该等于括号前的和
+/-
括号里面的和。因为栈顶为括号的符号,所以res=res*stack.pop()
,给括号里面的结果确定正负,然后再加上括号前的值res+=stack.pop()
3.11
还是计算器,看看自己能不能独立作出来!!!💪
3.15
思路简单的旋转矩阵,写起来还是有点麻烦,注意边界条件!
3.16
旋转矩阵,转吧!不能偷懒啊
昨天面试pony.ai写了二叉搜索树的2sum,还是有点磕磕绊绊,二叉树相关的内容都记不清了,得好好复习一下。
面试凉了,唉😌希望微软能过,加油加油!
🥈 1214. 查找两棵二叉搜索树之和🌱
二叉搜索树来啦,不是很难,唯手熟尔。多写多领悟吧
3.17
试了一下模拟面试,发现一道都不会,也太惨了吧o(╥﹏╥)o。整了一道非重叠矩形中的随机点,完全懵逼,看了题解才知道是蓄水池抽样算法,那就来一波吧!
蓄水池抽样很简单,设蓄水池容量为k,总水量为n:
- 蓄水池没满,就往蓄水池中加水
- 满了以后从k+1个元素开始,以 k/n 的概率来决定该元素是否被替换到数组中(数组中的元素被替换的概率是相同的)。当遍历完所有元素之后,数组中剩下的元素即为所需采取的样本。
🍺 蓄水池采样(Reservoir Sampling)
蓄水池采样最直接、简单的应用:
🥈 398. 随机数索引
3.18
链表也不大会啊,心态崩了,咋办😌
反转链表迭代:
定义prev
,交换一定要想清楚
next = cur.next
cur.next = prev
prev = cur
cur = next
递归有点不太好理解,多想一想
🥉206. 反转链表