1. 解题思路
这一题思路上其实很简单,直接分情况考察一下最后一个元素交换与不交换两种情况下所需的交换次数取最小值即可。
2. 代码实现
给出python代码实现如下:
class Solution:
def minOperations(self, nums1: List[int], nums2: List[int]) -> int:
n = len(nums1)
s1, s2 = nums1[-1], nums2[-1]
ans1 = 0
for i in range(n-1):
if nums1[i] <= s1 and nums2[i] <= s2:
continue
elif nums1[i] <= s2 and nums2[i] <= s1:
ans1 += 1
else:
ans1 = math.inf
break
s1, s2 = nums2[-1], nums1[-1]
ans2 = 1
for i in range(n-1):
if nums1[i] <= s1 and nums2[i] <= s2:
continue
elif nums1[i] <= s2 and nums2[i] <= s1:
ans2 += 1
else:
ans2 = math.inf
break
ans = min(ans1, ans2)
return ans if ans < n else -1
提交代码评测得到:耗时157ms,占用内存16.6MB。
本文介绍了解决LeetCode题目2934的方法,通过分析数组中元素的关系,确定交换次数最少策略,给出Python代码实现并展示了运行时间和内存使用情况。
2264

被折叠的 条评论
为什么被折叠?



