力扣3229.使数组等于目标数组所需的最少操作次数
力扣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);elseans -= s <= 0 ? k : min(k+s,0LL);s += k;}return ans;}};