2422. Merge Operations to Turn Array Into a Palindrome

33 阅读1分钟

image.png

方法

  • 双指针,从两头往里走,比较能否通过合并凑成回文。
  • 两边分别记录当前合并的和 leftsum,rightsum
class Solution {
    public int minimumOperations(int[] nums) {
        int res = 0;
        int left = 0, right = nums.length - 1;
        int leftSum = nums[left], rightSum = nums[right];
        while (left < right) {
            if (leftSum == rightSum) { // 两遍合并得到的数相等了
                left++;
                right--;
                leftSum = nums[left];
                rightSum = nums[right];
            } else if (leftSum < rightSum) {
                left++;
                leftSum += nums[left];
                res++; // 合并,操作次数+1
            } else {
                right--;
                rightSum += nums[right];
                res++; // 合并,操作次数+1
            }
            
        }
        return res;
    }
}