最近真的不太顺
https://i.imgur.com/R1cOf6U.png
主要是最近都没办法一次写完就没 bug
加上 LeetCode 时间很紧
一花时间 debug 就直接喷飞了
得想点办法才行
1. Difference Between Element Sum and Digit Sum of an Array
照他说的加一加再相减即可
2. Increment Submatrices by One
稍微算了一下发现其实不能用 brute force 因为 500*500*10000 应该要过不了
(如果 brute force 能过的话我会生气)
所以要用类似 prefix sum 的东西
mat[i][j] 会是 (0, 0) 到 (i, j) 里
query 左上角的数量 - 右上角的数量 - 左下角的数量 + 右下角的数量
写起来有点卡手
3. Count the Number of Good Subarrays
用 sliding window 计算以 j 为终点的最短合法 subarray
如果 [i, j] 是合法的,则 [0, j], [1, j], ..., [i, j] 都是合法的
算合不合法就去维护现在 window 内的 pair 数量就可以
4. Difference Between Maximum and Minimum Price Sum
以某个节点 v 为 root 时的 cost 是以他开始的最大 price sum 减去他自己
我用 two-pass 跑了两次 dfs,root 统一是 0
第一次算出从各节点出发的最大的两个 price sum
第二次时计算出各节点的 cost,也就是考虑往上走 parent 之后不考虑自己的最大 price sum
选最大的 cost 即可