描述
给一个数组 nums 写一个函数将 0 移动到数组的最后面,非零元素保持原数组的顺序
1.必须在原数组上操作
2.最小化操作数
您在真实的面试中是否遇到过这个题? 是
样例
给一个数组 nums 写一个函数将 0 移动到数组的最后面,非零元素保持原数组的顺序
1.必须在原数组上操作
2.最小化操作数
您在真实的面试中是否遇到过这个题? 是
样例
给出 nums = [0, 1, 0, 3, 12], 调用函数之后, nums = [1, 3, 12, 0, 0].
分析
将非零的数依次从数组的头开始存,后面的全部赋值0
程序
class Solution {
public:
/**
* @param nums: an integer array
* @return: nothing
*/
void moveZeroes(vector<int> &nums) {
// write your code here
if(nums.empty())
return;
int index = 0;//计算非零数的位置
for(int i = 0; i < nums.size(); i++){
if(nums[i] != 0)
swap(nums[index++], nums[i]);
}
for(int i = index; i < nums.size(); i++)
nums[i] = 0;
return;
}
};