【发布时间】:2020-02-03 07:42:29
【问题描述】:
问题陈述: 给定 A 和 B 有两个数组。我们需要打印 b/w i'th 元素的最小交换次数,这样两个数组都将严格递增。
如果数组已经严格递增,则打印 0。 如果数组不可能严格递增,则打印 -1。
只有第 i 个元素 A 可以与 B 的第 i 个元素交换。
元素有可能出现不止一次。
例如:
输入:
t=7
A=1 2 3 8 9 7 8
B=1 2 3 4 5 10 11
输出
2
将 7 和 8 与 10 和 11 交换。或者将 8 和 9 与 4 和 5 交换。
我的代码 Python3:
t=int(input())
A=list(map(int,input().split()))
B=list(map(int,input().split()))
count=0
for i in range(1,t):
if(A[i]-A[i-1]<=0):
if(A[i]<B[i]):
if(B[i-1]<A[i]):
A[i],B[i]=B[i],A[i]
count=count+1
for i in range(1,t):
if(B[i]-B[i-1]<=0):
if(B[i]<A[i]):
if(A[i-1]<B[i]):
A[i],B[i]=B[i],A[i]
count=count+1
ans=False
for i in range(1,t):
if(A[i]-A[i-1]<=0):
ans=True
break
if(B[i]-B[i-1]<=0):
ans=True
break
if(ans):
print(-1)
else:
print(count)
我的代码说明: 我正在检查第一个是否在数组 A 中它是否严格增加。如果否:则检查 B 的第 i 个元素是否大于当前元素,如果是,则它大于 A 的第 i 个元素,然后再检查 B 的第 (i-1) 个元素是否小于或不小于交换的元素A.
类似的方法将应用于B。
最后一次检查 A 和 B 在交换后严格增加。如果是打印计数,否则打印-1。
我的代码会失败的任何测试用例还是正确的方法? 还有其他方法可以解决这个问题吗?
【问题讨论】:
标签: arrays algorithm sorting data-structures