1 2 3 4 5 6 7 8 9 10 11
| class Solution { public: int minIncrements(int n, vector<int> &cost) { int ans = 0; for (int i = n / 2; i; i--) { ans += abs(cost[i * 2 - 1] - cost[i * 2]); cost[i - 1] += max(cost[i * 2 - 1], cost[i * 2]); } return ans; } };
|
这道题是第一次参加周赛的最后一题,因为时间限制没时间实现。
事后复盘发现了问题,想得还是太复杂,虽然已经明白了路径形成的过程,通过模拟也能得到正确结果。
但是显然只需要计算两个子节点的最大值即可
代码来自灵神。