原题目: 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
示例: 输入: [0,1,0,3,12] 输出: [1,3,12,0,0] 说明: 必须在原数组上操作,不能拷贝额外的数组。 尽量减少操作次数。
思路: 将数字不等于0的数字按遍历顺序依次从前往后存,然后如果不等于0的数字的数量小于数组长度的话,将这个数字后面的下标值置为0.
代码:
class Solution {
public:
void moveZeroes(vector
<int>& nums
) {
int i
= 0,j
= 0;
for(i
= 0 ; i
< nums
.size();i
++)
{
if(nums
[i
] != 0)
{
nums
[j
++] = nums
[i
];
}
}
while(j
< nums
.size())
{
nums
[j
++] = 0;
}
}
};
练习题31(两道差不多类型的题目) -缺失数字和只出现一次的数字