您的位置:首页 > 其它

283. Move Zeroes 难度:easy

2016-10-13 20:39 225 查看
题目:

Given an array 
nums
, write a function to move all 
0
's
to the end of it while maintaining the relative order of the non-zero elements.

For example, given 
nums = [0, 1, 0, 3, 12]
, after calling your function, 
nums
 should
be 
[1, 3, 12, 0, 0]
.

Note:

You must do this in-place without making a copy of the array.
Minimize the total number of operations.

思路:

题目要求我们在给定数组中进行操作,将0移到非0元素后面,而非0元素的相对位置保持不变。维持两个指针i,j,初始时都指向数组开头,当j所指的元素不等于0时,如果i等于j,i和j同时加1,如果i不等于j,即i指向的元素为0,i,j所指元素交换,同时i和j都加一,当j所指元素等于0时,j加一,i保持不变。

程序:

class Solution {
public:
void moveZeroes(vector<int>& nums) {
int i = 0;
int j = 0;
while(j < nums.size())
{
if(nums[j] != 0)
{
if(i == j)
i++;
else
{
nums[i++] = nums[j];
nums[j] = 0;
}
}
j++;
}
return;

}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: