注意:根据数据规模与约定应该是有不止1个零的,但是测试点里没有,所以我只按照只有结尾一个零的情况
输入格式
一行内输入一串整数,以 0 结束,以空格间隔。
输出格式
一行内倒着输出这一串整数,以空格间隔。
说明/提示
数据规模与约定
对于 100% 的数据,保证 0 ≤ ai ≤2^31−1,数字个数不超过 100。
列表操作
def oi_input():
nums = list(map(int, input().split()))
return nums
def oi_test():
nums = [3, 65, 23, 5, 34, 1, 30, 0]
return nums
def solution(nums):
'''python的列表操作,和读零就停一回事,三种输出方式'''
nums = nums[:-1]
# nums = nums[::-1]
# for i in nums:
# print(i, end=" ")
# nums.reverse()
# print(' '.join(map(str, nums)))
print(' '.join(map(str, reversed(nums))))
if __name__ == '__main__':
nums = oi_test()
# nums = oi_input()
solution(nums)
递归
def oi_input():
nums = list(map(int, input().split()))
return nums
def oi_test():
nums = [3, 65, 23, 5, 34, 1, 30, 0]
return nums
def solution(nums):
'''递归,向下展开,向上回溯'''
def collect_reversed():
num = next(nums_iter, None)
if num is None or num == 0:
return []
rest = collect_reversed()
rest.append(num)
return rest
nums_iter = iter(nums)
result = collect_reversed()
print(' '.join(map(str, result)))
if __name__ == '__main__':
nums = oi_test()
# nums = oi_input()
solution(nums)
栈
def oi_input():
nums = list(map(int, input().split()))
return nums
def oi_test():
nums = [3, 65, 23, 5, 34, 1, 30, 0]
return nums
def solution(nums):
'''数组模拟栈'''
stack = []
for i in nums:
if i == 0:
break
stack.append(i)
while stack:
print(stack.pop(), end=" ")
if __name__ == '__main__':
nums = oi_test()
# nums = oi_input()
solution(nums)
1242

被折叠的 条评论
为什么被折叠?



