题目 3: 有一个整数数组 a,设计一个算法将所有偶数为元素移动到所有奇数位元素的前面,要求它们的相对次序不改变。例如,a={1,2,3,4,5,6,7,8},移动后a={2,4,6,8,1,3,5,7}
思路:建立两个队列,先将所有奇数位元素进队列 1,将所有偶数位元素进队列2,再将队列 2 中元素依次出队放入 a,将队列 1 中元素依次出队放入 a。
你题目的解答代码如下:
a = list(map(int,input().split()))
q1 = []
q2 = []
for v in a:
if v%2==0:
q1.append(v)
else:
q2.append(v)
a = q1+q2
print(a)
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
非要用队列吗?直接推导式行不?
a=[1,2,3,4,5,6,7,8]
a = [i for i in a if i % 2 == 0] + [i for i in a if i % 2 == 1]
print(a)
#双端队列:
from collections import deque
a=[1,2,3,4,5,6,7,8]
a1 = deque()
a2 = deque()
while a:
t = a.pop()
if t % 2 == 1:
a1.appendleft(t)
else:
a2.appendleft(t)
while a2 :
a.append(a2.popleft())
while a1 :
a.append(a1.popleft())
print(a)