题目描述:
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
请注意 ,必须在不复制数组的情况下原地对数组进行操作。
示例 1:
输入: nums = [0,1,0,3,12]
输出: [1,3,12,0,0]
示例 2:
输入: nums = [0]
输出: [0]
思路:逆向思维,找非0的数,将非0的所有数先存进数组,然后再在尾部添加0。
代码:
class Solution {
public void moveZeroes(int[] nums) {
//逆向思维,先把不是0的收入数组,然后在后面添0
int c=nums.length;
int s=0;
//存入非0数
for(int i=0;i<c;i++){
if(nums[i]!=0){
nums[s++]=nums[i];
}
}
//后面添加0
for(int i=s;i<c;i++){
nums[i]=0;
}
}
}
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/move-zeroes