力扣一百题

前言

兜兜转转,还是离不开写算法题的命运,新生赛那会刷了那么多算法题,只希望功力不要完全散尽。我想我还是比较有天赋的,毕竟是新生赛第八(不犯贱的话起码前五了),现在开始这一百题征程吧。

哈希

1
2
if p, ok := hashTable[q]; ok {
}

这里运用判断哈希表中是否存在某个键为q的时间复杂度是O(1),并把值赋值给p,然后执行ok语句。
可以用在查找补数等场景中。

1
2
3
4
for _, str := range strs{
s := []byte(str)
sort.Slice(s, func(i, j int) bool {return s[i] < s[j]})
}

这段代码可以给str按ascii大小排序,例如把“eat”排序为“aet”,排序复杂度是nlogn(n为len(s))

双指针

一般是一个左一个右,我们优先移动右边(外层循环)的,然后在内层循环中判断不符合条件的情况,进行左指针移动

滑动窗口

就是双指针的一种运用,维护一个窗口,然后围绕这个窗口去思考即可

动态规划入门

入门动态规划我感觉得从一个思考点入手,也就是要用一个f(i)来维持当前循环到第i个时的最优状态(例如当最优状态是nums[i]结尾时,最优状态为f(i)),然后用状态转移方程来更新状态(做取舍)

Icon
致谢名单
本作品由 Hafsun 于 2026-07-23 19:24:57 发布
作品地址:力扣一百题
除特别声明外,本站作品均采用 CC BY-NC-SA 4.0 许可协议,转载请注明来自 欢迎回家
Logo
上一篇深澜智远后端开发面经下一篇权限管理系统开发