力扣3229.使数组等于目标数组所需的最少操作次数
-
差分数组
- s表示累积量
- k表示差值
- 如果累积量足够,则不需要额外操作
-
class Solution { public: long long minimumOperations(vector<int>& nums, vector<int>& target) { long long s = target[0] - nums[0]; long long ans = abs(s); for(int i=1;i<nums.size();i++) { int k = (target[i] - target[i-1]) - (nums[i] - nums[i-1]); if(k>0) ans += s >= 0 ? k : max(k+s,0LL); else ans -= s <= 0 ? k : min(k+s,0LL); s += k; } return ans; } };