单调递增的数字这道题完全是用贪心的策略去修改对应位的数字,贪心规则如下:从最小位开始向前遍历,如果前一位数字大于后一位数字,前一位数字-1,并且标记当前位,后续把标记位以及之后的位置全部变成9,就是距离给定数字最近的单调递增数字。func monotoneIncreasingDigits(n int) int { s := []byte(strconv.Itoa(n)) po...
Articles in the category of 编程技术杂谈与总结
- Home
- 编程技术杂谈与总结
平衡二叉树这个需要左右子树的深度差小于等于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 {...
中间那部分反转实际上就比较简单,操作 right-left+1次即可,而前边的left可能是1,所以这里需要构建一个dummy头来避免一些问题即可。/**...
这道题目只保证了矩阵从左到右、从上到下分别是单调递增,没有保证全局,所以没办法将下标映射成一维数组来做,但是矩阵的右上角和左下角保证了往不同的两个方向移动分别是减少和增加,所以可以从这两个地方开始搜索,达到类似二分的效果。func searchMatrix(matrix [][]int, target int) bool { n := len(matrix) m := len...