Yellow
Yellow
因为备忘录和 grid 是一样大的,且由于前进方向是向右、向下,和我们的默认遍历方向一致,所以感觉可以 `原地修改`,直接把 grid 当成 备忘录来使用 ```java public int minPathSum(int[][] grid) { for (int i = 0; i < grid.length; i++) { for (int j = 0; j <...
不去维护和使用 left,这样逻辑上反而好理解一些
`倒着走` + `优势抹平` 考虑两个场景, `6 -> -5` , 和 `9 -> -5`, 两个场景都可以活着,9比6并没有优势,所以应该优势抹平,走过去之后`hp`置为0(含义就是走到最后一格,血量为1就行,多了没用,多多少也无所谓,干脆遍历的时候扣除多余血量便于计算) 备忘录借用入参 ```java public int calculateMinimumHP(int[][] dungeon) { // 倒着走,看一下最后在起点处, hp 最低是多少 for (int i = dungeon.length -...
按照东哥的思路,画了一个图,便于理解两种背包思路的区别  
@Brandy0k > sum(A) - sum(B) = target 这个式子怎么理解。为什么不是sum(A)+ sum(B) = target 一个添加`+`,一个添加`-`, 其实就是你理解的 sum(A) + (-sum(B)) = target = sum(A) - sum(B)
1楼说的有道理, `push` 的时候的确必须使用 `
【缺失的元素】,可以这样理解 因为异或满足交换律,所以 `1^2^3 = 3^2^1 = 1^3^2`,顺序无所谓的, 所以无论数组里数字是什么顺序,异或结果是一样的,所以可以写成 `0^1^2^3...^n` (注意这里面少一个数) (题目特意标明了 nums 中的所有数字都 **独一无二**) 索引的异或是 `0^1^2^3...^n-1` (这里面的数字是完整的) 把数组里的数字异或结果和索引异或结果,再异或一下,就变成了: `(0^1^2^3...^n) ^ (0^1^2^3...^n-1)` 因为边界不一样,n 消不掉,所以 还需要补一个 n `(0^1^2^3...^n) ^ (0^1^2^3...^n-1) ^ n`...
  
> 高版本的wx 比如3.7以上的是不是不让抓了 我的pc微信版本是 `3.7.6.44`, 这个版本是可以的 
pc微信抓包看这里 https://github.com/Lcry/a-sheep-assistant/issues/40