本文共 673 字,大约阅读时间需要 2 分钟。
要将数组中的所有零移动到末尾,同时保持非零元素的相对顺序,可以采用以下方法:
这个方法的核心思想是从数组的末尾开始遍历,遇到零时将其移动到末尾。这种方法避免了因删除元素导致索引变化的问题,从而保证了非零元素的相对顺序。
nums = [0, 1, 0, 3, 12]for i in range(len(nums)-1, -1, -1): if nums[i] == 0: nums.append(nums[i]) nums.pop(i)print(nums) # 输出: [1, 3, 12, 0, 0]
另一种方法是使用一个变量来记录零的位置。当遇到非零元素时,将其移到记录位置后面,然后将零移动到末尾。
nums = [0, 1, 0, 3, 12]j = 0for i in range(len(nums)): if nums[i] == 0: nums.append(nums[i]) nums.pop(i) else: j += 1print(nums) # 输出: [1, 3, 12, 0, 0]
输入:[0, 1, 0, 3, 12]
[1, 3, 12, 0, 0]。[1, 3, 12, 0, 0]。这两种方法都能高效地解决问题,且在操作次数上表现优异。
转载地址:http://woml.baihongyu.com/