首先,我们能知道 f(1, k) = 0,然后看 f(2, k) 是怎么来的。比如 f(2, 1),我们知道会删除掉第一个数,然后就变成 f(1, 1),这个时候相对于原本的索引有什么样的变化呢?【0】【1】【】【1】上面的1,在 f(1, 1) 是被看作 0 的,因为是从第 k+1 个数开始被算作 0 了,那么反推回原本的索引应该是 (f(1, 1) + 1) % 2,也就是 1。那么我们...
Articles in the category of Leetcode
- Home
- Leetcode
单调递增的数字这道题完全是用贪心的策略去修改对应位的数字,贪心规则如下:从最小位开始向前遍历,如果前一位数字大于后一位数字,前一位数字-1,并且标记当前位...
平衡二叉树这个需要左右子树的深度差小于等于1,dfs解决func isBalanced(root *TreeNode) bool { _, balanced := valid(root) return balanced } func valid(root *TreeNode) (int, bool) { if root == nil { return...
小顶堆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...