力扣一百题
前言
兜兜转转,还是离不开写算法题的命运,新生赛那会刷了那么多算法题,只希望功力不要完全散尽。我想我还是比较有天赋的,毕竟是新生赛第八(不犯贱的话起码前五了),现在开始这一百题征程吧。
哈希
1 | if p, ok := hashTable[q]; ok { |
这里运用判断哈希表中是否存在某个键为q的时间复杂度是O(1),并把值赋值给p,然后执行ok语句。
可以用在查找补数等场景中。
1 | for _, str := range strs{ |
这段代码可以给str按ascii大小排序,例如把“eat”排序为“aet”,排序复杂度是nlogn(n为len(s))
双指针
一般是一个左一个右,我们优先移动右边(外层循环)的,然后在内层循环中判断不符合条件的情况,进行左指针移动
滑动窗口
就是双指针的一种运用,维护一个窗口,然后围绕这个窗口去思考即可
动态规划入门
入门动态规划我感觉得从一个思考点入手,也就是要用一个f(i)来维持当前循环到第i个时的最优状态(例如当最优状态是nums[i]结尾时,最优状态为f(i)),然后用状态转移方程来更新状态(做取舍)

