2673. 使二叉树所有路径值相等的最小代价
class Solution:
def minIncrements(self, n: int, cost: List[int]) -> int:
res = 0
for i in range(n - 2, 0, -2):
res += abs(cost[i] - cost[i + 1])
cost[i//2] += max(cost[i], cost[i + 1])
return res

class Solution:
def minIncrements(self, n: int, cost: List[int]) -> int:
res = 0
for i in range(n//2, 0, -1):
res += abs(cost[i * 2 - 1] - cost[i * 2])
cost[i - 1] += max(cost[i * 2 - 1], cost[i * 2])
return res
C++
class Solution {
public:
int minIncrements(int n, vector<int>& cost) {
int res = 0;
for (int i = n / 2; i > 0; --i){
res += abs(cost[i * 2 - 1] - cost[i * 2]);
cost[i - 1] += max(cost[i * 2 - 1], cost[i * 2]);
}
return res;
}
};
class Solution {
public:
int minIncrements(int n, vector<int>& cost) {
int res = 0;
for (int i = n - 2; i > 0; i -= 2){
res += abs(cost[i] - cost[i + 1]);
cost[i / 2] += max(cost[i], cost[i + 1]);
}
return res;
}
};