版权声明:©;2004 Microsoft Corporation. All rights reserved. https://blog.csdn.net/qq_42036824/article/details/86567537
(2018-携程-春招题)题目需求:
- 给定一个整形数组, 将数组中所有的0移动到末尾, 非0项保持不变;
- 在原始数组上进行移动操作, 勿创建新的数组;
- 输入:
第一行是数组长度, 后续每一行是数组的一条记录;
4
0
7
0
2 - 输出:
调整后数组的内容;
4
7
2
0
0
len = int(input('请输入数组长度:'))
li = []
for i in range(len):
li.append(int(input()))
'''
创建列表可合并为一句:
li = [int(input()) for i in range(len)]
'''
'''
笨方法
for x in li:
if x == 0:
li.remove(x)
li.append(0)
for y in range(len):
print(li[y])
'''
def remove(i):
if i == 0:
return 1
else:
return 0
# 按函数的返回值排序:
# 列表里的元素为0的时候,返回值1(排在后面)
# 列表里的元素为1的时候,返回值0(排在前面)
# 然后遍历输出结果:
for y in sorted(li,key=remove):
print(y)
结果:
请输入数组长度:5
4
0
7
0
2
4
7
2
0
0
- 老师的:
##想要接收可以在一行输入
n = ''.join(input().split()) ##此时是一个字符串
li = [int(i) for i in n]
def move_zero(item):
if item == 0:
return 2
else:
return 1
print(sorted(li,key=move_zero))
结果:
4 0 7 0 2 ##输入
[4, 7, 2, 0, 0] ##输出