最小覆盖子串这道题是需要从 s 中找到覆盖 t 中所有字符的最短子串,所以我们首先需要维护一个 map 去保存对应的字符出现次数,再用一个变量保存需要的字符数量,这样在搜索的时候可以快速知道是否满足要求。利用滑动窗口,先扩张右边界,然后记数是否满足覆盖 t 的所有字符,如果满足则收缩左边界到刚好满足,然后重新将左边界导致不满足条件的字符纳入 map,然后重复这个过程即可。func minWi...
Articles in the category of 编程技术杂谈与总结
- Home
- 编程技术杂谈与总结
首先,我们能知道 f(1, k) = 0,然后看 f(2, k) 是怎么来的。比如 f(2, 1),我们知道会删除掉第一个数,然后就变成 f(1, 1),...
单调递增的数字这道题完全是用贪心的策略去修改对应位的数字,贪心规则如下:从最小位开始向前遍历,如果前一位数字大于后一位数字,前一位数字-1,并且标记当前位,后续把标记位以及之后的位置全部变成9,就是距离给定数字最近的单调递增数字。func monotoneIncreasingDigits(n int) int { s := []byte(strconv.Itoa(n)) po...
平衡二叉树这个需要左右子树的深度差小于等于1,dfs解决func isBalanced(root *TreeNode) bool { _, bal...
小顶堆type Heap struct { store []*ListNode } func (h *Heap) Push(val *ListNode) { h.store = append(h.store, val) h.liftUp(len(h.store)-1) } func (h *Heap) liftUp(i int) { if i == 0 {...