将数组中的非零元素移动到所有零元素前面:采用双指针移动法,指针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;
}
本文介绍了一种有效的算法,用于将数组中的所有非零元素移动到零元素之前。通过使用双指针技巧,该算法能在单次遍历中完成任务,并保持O(1)的额外空间复杂度。
219

被折叠的 条评论
为什么被折叠?



