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 进行授权