文章

2934. 最大化数组末位元素的最少操作次数(Rating 1803)

2934. 最大化数组末位元素的最少操作次数(Rating 1803)

以下内容偏向于记录个人练习过程及思考,非常规题解内容

题目

2934. 最大化数组末位元素的最少操作次数

Rating 1803

思路

不要想复杂了,仔细想下,总共就需要讨论两种情况

  • 换最后一个数
  • 不换最后一个数

枚举以上两种情况,遍历数组判断即可,最后取一个最小值

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Solution:
    def minOperations(self, nums1: List[int], nums2: List[int]) -> int:
        n = len(nums1)
        cnt0, cnt1 = 0, 1 # do not swap, and swap the last 2 nums
        for i in range(n - 1):
            num1, num2 = nums1[i], nums2[i]
            # if we do nothing
            if num1 <= nums1[-1] and num2 <= nums2[-1]: # do nothing
                pass
            elif num1 <= nums2[-1] and num2 <= nums1[-1]: # swap
                cnt0 += 1
            else: # cannot get ans
                return -1

            # if we swap the last nums
            if num1 <= nums2[-1] and num2 <= nums1[-1]: # do nothing
                pass
            elif num1 <= nums1[-1] and num2 <= nums2[-1]: # swap
                cnt1 += 1
            else: # cannot get ans
                return -1
        return min(cnt0, cnt1)
本文由作者按照 CC BY 4.0 进行授权