📅  最后修改于: 2023-12-03 14:58:06.494000             🧑  作者: Mango
在某些情况下,我们需要将数组重新排列为交替的奇偶序列。比如题目中给出的要求,我们可以通过数字逆时针旋转数组元素来实现这个功能。
def rotate(arr, k):
k = k % len(arr)
arr = arr[k:] + arr[:k]
return arr
def rearrange(arr):
arr = rotate(arr, len(arr))
odd, even = [], []
for i in range(len(arr)):
if arr[i] % 2 == 0:
even.append(arr[i])
else:
odd.append(arr[i])
new_arr = []
for i in range(min(len(odd), len(even))):
new_arr.append(odd[i])
new_arr.append(even[i])
if len(odd) > len(even):
new_arr += odd[len(even):]
else:
new_arr += even[len(odd):]
return new_arr
arr = [1, 2, 3, 4, 5, 6, 7, 8]
new_arr = rearrange(arr)
print(new_arr) # [1, 2, 3, 4, 5, 6, 7, 8]
首先对数组进行旋转,得到[8, 1, 2, 3, 4, 5, 6, 7]。然后将奇数和偶数分别存储到两个新数组中,得到odd=[1, 3, 5, 7]和even=[8, 2, 4, 6]。将两个新数组按逆序交替组合成新的数组,得到[1, 8, 3, 2, 5, 4, 7, 6]。