将数组中的非零元素移动到所有零元素前面:采用双指针移动法,指针i遍历数组,指针j指向零元素位置
class Solution {
public:
void moveZeroes(vector<int>& nums) {
for(int i=0,j=0;i<nums.size();i++)
{
if(nums[i]!=0)
{
int temp=nums[j];
nums[j]=nums[i];
nums[i]=temp;
j++;
}
}
}
};
或者:
void moveZeroes(vector<int>& nums) {
int j = 0 ;
for(int i = 0;i<nums.size();i++)
{
if(nums[i])
{
nums[j++] = nums[i];
}
}
for(;j<nums.size();j++)
nums[j]=0;
}