leetcode283. 移动零|双指针

移动零

leetcode283. 移动零|双指针_第1张图片

 这个题目,可以用到双指针的方法。

采用2个指针i、k,i用于遍历数组,找到不为0的数组与k指向的位置的值进行交换。

以上面的示例1为例(0,1,0,3,12):

1. i、k都指向0,i不是非零,i指向下一个位置

2. i指向1、k指向0,i非零。i和k指向的位置交换数值,然后i和k都指向下一个位置---1,0,0,3,12

3. i指向第三个位置的0,k指向第二个位置的0,i不是非零,i继续指向下一个位置

4. i指向3、k指向0,i非零。i和k指向的位置交换数值,然后i和k都指向下一个位置---1,3,0,0,12

5. 此时i指向12,k指向第三个位置的0,i非零。i和k指向的位置交换数值,然后i和k都指向下一个位置---1,3,12,0,0

代码如下:

class Solution {
public:
    void moveZeroes(vector& nums) {
        int i,k=0;//双指针i和k
        int len=nums.size();
        for(i=0;i

你可能感兴趣的:(leetcode,数据结构,C语言,c++,算法,leetcode)