平衡二叉树这个需要左右子树的深度差小于等于1,dfs解决func isBalanced(root *TreeNode) bool { _, balanced := valid(root) return balanced } func valid(root *TreeNode) (int, bool) { if root == nil { return...
SnowKagura‘s blog
直面生活,热爱生活小顶堆type Heap struct { store []*ListNode } func (h *Heap) Push(val *ListN...
中间那部分反转实际上就比较简单,操作 right-left+1次即可,而前边的left可能是1,所以这里需要构建一个dummy头来避免一些问题即可。/** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } */ func reve...
这道题目只保证了矩阵从左到右、从上到下分别是单调递增,没有保证全局,所以没办法将下标映射成一维数组来做,但是矩阵的右上角和左下角保证了往不同的两个方向移动...
这两道题虽然粗看感觉挺简单的,但是需要考虑到的东西比较多,比如如果用dfs,需要通过记忆之前计算的答案进行剪枝,否则时间复杂度是指数级别,会导致超时,用动态规划的话反而简单许多。最小路径和dfs做法如下func minPathSum(grid [][]int) int { n := len(grid) m := len(grid[0]) memo := make([]...