【力扣热题100】—— Day2.移动零
你才摔了几跤,就说这是人生
—— 24.11.27
283. 移动零
给定一个数组
nums
,编写一个函数将所有0
移动到数组的末尾,同时保持非零元素的相对顺序。请注意 ,必须在不复制数组的情况下原地对数组进行操作。
示例 1:
输入: nums = [0,1,0,3,12]输出:[1,3,12,0,0]
示例 2:
输入: nums = [0]输出: [0]提示:
1 <= nums.length <= 104
-231 <= nums[i] <= 231 - 1
方法一:交换位置
遍历数组,对数组中的每一个元素进行判断,如果元素不等于0,则将该元素移动至索引为notZero处,notZero索引从0开始,如果发生了元素移动,则notZero索引值加1
python实现
class Solution:
def moveZeroes(self, nums: List[int]):
notZero = 0
for i in range(len(nums)):
if nums[i] != 0:
temp = nums[notZero]
nums[notZero] = nums[i]
nums[i] = temp
notZero += 1
Java实现
class Solution {
public void moveZeroes(int[] nums) {
int notZero = 0;
int temp = 0;
for(int i = 0; i < nums.length; i++){
if(nums[i] != 0){
temp = nums[i];
nums[i] = nums[notZero];
nums[notZero] = temp;
notZero++;
}
}
}
}