2.双指针法

删除数组中全部的某一个元素

int removeElement(vector &nums, int val)
{
    int slow = 0;
    for (int fast = 0; fast < nums.size(); fast++)
    {
        if (nums[fast] != val)
        {
            nums[slow] = nums[fast];
            slow++;
        }
        
    }
}

快的在前面判断是不是等于val  若不等于就赋值给slow然后slow++

------------------------------------------------------------------------------------

27移除零

 当slow是0时与快指针交换 有多少零就交换多少次
如果slow等于零了那么fast执行++也等于0 然后fast再++再进行交换

void moveZeroes(vector &nums)
{
    int slow = 0;
    int size = nums.size();
    for (auto fast = 0; fast < nums.size(); fast++)
    {
        if (nums[slow] == 0 && nums[fast] != 0)
        {
            nums[slow++] = nums[fast];
            nums[fast] = 0;
        }
        if (nums[slow] != 0)
        {
            slow++;
        }
    }
}


要fast比slow快再进行交换

void moveZeroes(vector &nums)
{
    int slow = 0;
    int size = nums.size();
    for (auto fast = 0; fast < nums.size(); fast++)
    {
        if (nums[slow] == 0 && nums[fast] != 0 && fast > slow)
        {
            nums[slow++] = nums[fast];
            nums[fast] = 0;
        }
        if (nums[slow] != 0)
        {
            slow++;
        }
    }
}

977有序数组的平方

双指针不只有快慢指针还有左右指针  两边到中间也是
有负数所以都是两边最大中间小   k代表位置 i<=j 的等于是要算相遇的那个元素再插入到新的容器

class Solution {
public:
    vector sortedSquares(vector& nums)
     {
        int i = 0;
        int k = nums.size()-1;
        int j = nums.size()-1;
        vector v(nums.size(),0);
        while(i<=j)
        {
            if(nums[i]*nums[i]>nums[j]*nums[j])
            {
                v[k--]=nums[i]*nums[i];
                i++;
            }else
            {
                v[k--]=nums[j]*nums[j];
                j--;
            }
        }
        return v;

    }
};

----------------------------------------------------------

力扣844

给定 s 和 t 两个字符串,当它们分别被输入到空白的文本编辑器后,如果两者相等,返回 true 。# 代表退格字符。

注意:如果对空文本输入退格字符,文本继续为空。

示例 1:

输入:s = "ab#c", t = "ad#c"
输出:true
解释:s 和 t 都会变成 "ac"。

关键步骤在于slow-- 不需要别的可以覆盖的

class Solution {
public:

    void get(string& s)
    {
       
        int slow = 0;
        int fast = 0;
        for(;fast

你可能感兴趣的:(代码随想录笔记,算法,数据结构)