题目描述
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
示例:
输入:[0,1,0,3,12]
输出:[1,3,12,0,0]
说明:
必须在原数组上操作,不能拷贝额外的数组。
尽量减少操作次数。
答案代码
class Solution{
public:
void moveZeroes(vector<int>& nums){
int k = 0;//在数组中[0...K)的元素为非零
//[K..i)为0
//遍历到i时,保证[0...i)都为非0元素,且相对位置没有发生变化
for(int i =0; i < nums.size();i++){
if(nums[i])
if(i != k)
swap(nums[k++],nums[i]);
else //i == k ,数组全为0
k++;
}
}
};
测试代码
#include <iostream>
#include <vector>
using namespace std;
class Solution{
public:
void moveZeroes(vecto
这篇博客介绍了如何在原数组上移动零到末尾,保持非零元素顺序的C++解题思路。提供示例、问题说明及完整的代码实现,并鼓励读者参与讨论和刷题挑战。
最低0.47元/天 解锁文章
5630

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



