给定一个长度不小于2的数组arr,实现一个函数调整arr,要么让所有的偶数下标都是偶数,要么让所有的奇数下标都是奇数
注意:1、数组下标从0开始!
2、本题有special judge,你可以输出任意一组合法解!同时可以证明解一定存在
[要求]
时间复杂度为,额外空间复杂度为
第一行一个整数N。表示数组长度
接下来一行N个整数表示数组内的数
输出N个整数。表示调整后的数组
5 1 2 3 4 5
2 1 4 3 5
样例中的输出保证了奇数下标都是奇数
#数位调整函数 def process(nums): #偶数下标 even=0 #奇数下标 odd=1 #以最后一个数字为过渡,交换奇数位,偶数位上的数字 while even<len(nums)and odd<len(nums): #如果最后一个数字是偶数 #应该放在偶数位置上 if nums[-1]%2==0: #交换数值 nums[even],nums[-1]=nums[-1],nums[even] #偶数位置前移 even+=2 else: nums[odd],nums[-1]=nums[-1],nums[odd] odd+=2 return nums n=int(input()) nums=list(map(int,input().split())) print(" ".join(map(str,process(nums))))
N = eval(input()) ls = list(map(int, input().split())) # 奇数odd 偶数even odd, even = [], [] for i in ls: if i%2 == 1: odd.append(i) else: even.append(i) # 奇数更多,先放完偶数 if len(odd) > len(even): for i in range(len(even)): ls[i*2] = even[i] ls[i*2+1] = odd[i] ls[2*len(even):] = odd[len(even):] else: for i in range(len(odd)): ls[i*2] = even[i] ls[i*2+1] = odd[i] ls[2*len(odd):] = even[len(odd):] print(' '.join(map(str, ls)))