(C++)移动零--双指针法

简介: (C++)移动零--双指针法

个人主页:Lei宝啊

愿所有美好如期而遇


算法原理

双指针法,不一定是说就要使用指针,只是一种形象的说法,在数组中,我们一般将数组下标当做指针,比如我们定义cur,dest,cur的左边都是处理过的,dest左边的都是非0,dest和cur中间的都是0。开始我们将cur赋值0,因为我们不知道下标为0的元素是否是0,所以dest我们赋值为-1,如果cur指向的元素值为0,那么cur++,如果不为0,那么dest++,然后和cur指向的元素交换值,cur++。我们重复上述步骤,直到cur走到尽头。

图示

代码

class Solution {
public:
    void moveZeroes(vector<int>& nums) 
    {
        int cur = 0;
        int dest= -1;
        while(cur < nums.size())
        {
            if(nums[cur] != 0)
            {
                swap(nums[cur++],nums[++dest]);
            }
            else
            {
                cur++;
            }       
        }        
    }
};


目录
相关文章
|
6天前
|
算法
LeetCode刷题---167. 两数之和 II - 输入有序数组(双指针-对撞指针)
LeetCode刷题---167. 两数之和 II - 输入有序数组(双指针-对撞指针)
|
6天前
|
人工智能 C++
查找题(二分解法c++)
查找题(二分解法c++)
26 0
|
6天前
|
存储 算法
算法系列--动态规划--回文子串系列(上)
算法系列--动态规划--回文子串系列
24 0
|
6天前
|
算法
算法系列--动态规划--回文子串系列(下)
算法系列--动态规划--回文子串系列(下)
23 0
|
6天前
|
算法 C++
(C++)四数之和--双指针法
(C++)四数之和--双指针法
28 0
|
6天前
|
算法 C++
(C++)三数之和--双指针法
(C++)三数之和--双指针法
21 0
|
6月前
|
算法
算法学习--双指针与二分查找
算法学习--双指针与二分查找
|
11月前
|
存储
力扣 -- 15.三数之和
力扣 -- 15.三数之和
|
11月前
|
存储 算法 安全
LeetCode算法小抄 -- 链表(快慢指针、双指针、回文链表)
LeetCode算法小抄 -- 链表(快慢指针、双指针、回文链表)
|
算法
LeetCode每日1题--三数之和
LeetCode每日1题--三数之和
59 0