电子商务网站建设经费,上海房地产官网,精品网站要建设需要多少钱,我的网站建设题目
给定一个数组 nums#xff0c;编写一个函数将所有 0 移动到数组的末尾#xff0c;同时保持非零元素的相对顺序。
请注意 #xff0c;必须在不复制数组的情况下原地对数组进行操作。
示例 1:
输入: nums [0,1,0,3,12] 输出: [1,3,12,0,0] 示例 2:
输入: nums [0]…题目
给定一个数组 nums编写一个函数将所有 0 移动到数组的末尾同时保持非零元素的相对顺序。
请注意 必须在不复制数组的情况下原地对数组进行操作。
示例 1:
输入: nums [0,1,0,3,12] 输出: [1,3,12,0,0] 示例 2:
输入: nums [0] 输出: [0]
答案
这道题可以使用双指针的方法解决一个指针用来遍历数组一个指针用来记录0的末尾位置。
具体步骤如下
定义两个指针一个指向当前遍历的位置一个指向0的末尾位置。 遍历数组如果当前元素为0则将其移动到0的末尾位置并将0的末尾位置指针向前移动一位。 如果当前元素不为0则将其移动到当前位置并将当前位置指针向前移动一位。 重复上述步骤直到遍历完整个数组。 代码如下
def moveZeroes(nums): if not nums: return [] left 0 # 当前遍历位置指针 right 0 # 0的末尾位置指针 n len(nums) while left n: if nums[left] 0: nums[left], nums[right] nums[right], nums[left] right 1 else: nums[left] nums[left] 1 # 非零元素加上一个非零值保证相对顺序不变 left 1 return nums时间复杂度为O(n)空间复杂度为O(1)。