題目描述
給定一個數組 nums,編寫一個函數將所有 0 移動到數組的末尾,同時保持非零元素的相對順序。
示例:
輸入: [0,1,0,3,12]
輸出: [1,3,12,0,0]
說明:
必須在原數組上操作,不能拷貝額外的數組。
儘量減少操作次數。
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/move-zeroes
著作權歸領釦網絡所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。
解題思路
有兩個指針,i和j,如果i遇到爲0,則跳過,
i並不爲0的話,交換i和j 指向的元素的位置。
最後將j指向的位置和向量尾部元素全部置爲0。
代碼
class Solution {
public:
void moveZeroes(vector<int>& nums) {
if(nums.size()==0){return;}
int i=0,j=0;
for(i=0;i<nums.size();i++){
if(nums[i]!=0){
nums[j++]=nums[i];
}
}
for(;j<nums.size();j++){
nums[j]=0;
}
}
};