Move Zeroes
Total Accepted: 36621 Total Submissions: 86626 Difficulty: Easy
Given an array nums
, write a function to move all 0
's to the end of it while maintaining the relative order of the non-zero elements.
For example, given nums = [0, 1, 0, 3, 12]
, after calling your function, nums
should be [1, 3, 12, 0, 0]
.
Note:
1.You must do this in-place without making a copy of the array.
2.Minimize the total number of operations.
思路:
维持两个int型下标(也可理解为指针)
1).index_,index_1;,递增index_寻找下一个0,令index_1为index_+1,搜寻index_之后的第一个非0值,交换他们的位置。
2).重复1).直到index_搜寻到数组末尾。
class Solution {
public:
void moveZeroes(vector<int>& nums) {
int size = nums.size();
int index_ = 0;
while(index_ < size){
if(nums[index_]!=0){
index_++;
}else{
int index_1=index_+1;
while(index_1<size&&nums[index_1]==0){
index_1++;
}
if(index_1<size){
nums[index_]=nums[index_1];
nums[index_1]=0;
}else{
break;
}
}
}
}
};