一、数组 🔢

简单模拟

贪心

滑动窗口

滑动窗口模板

int findSubset(vector<int> &nums, int k)
{
    int n = nums.size();
    int start = 0, end = 0; //双指针,当前遍历的区间为[start, end]
    int sums = 0;           //用于统计子数组/子区间是否有效,根据题目可能会改成求和/计数
    int res = 0;            //保存最大的满足题目要求的 子数组/子串 长度
    while (end < n)
    {
        //当右边的指针没有搜索到 数组/字符串 的结尾
        sums += nums[end]; //增加当前右边指针的数字/字符的求和/计数
        while (a)
        {
            // a表示区间[start,end]不符合题目给定条件
            //需要一直移动左指针,直至找到一个符合题意的区间
            sums -= nums[start]; //移动左指针前需要从nums中减少start位置字符的求和/计数
            start++;             //移动左指针,注意不能跟上面一行代码写反
        }
        //找到了一个符合题意要求的子数组/子串
        res = max(res, end - start + 1); //更新维护的最小/最大的结果
        end++;                           //移动右指针,探索新的区间
    }
    return res;
}

滑动窗口题目

【3.无重复字符的最长子串】

【76. 最小覆盖子串】

【209.长度最小的子数组】

【239. 滑动窗口最大值】

【1004.最大连续 1 的个数 III】

  • 【2104(周赛)】

双指针

双指针题目

【19.删除链表的倒数第 N 个结点】

【26.删除有序数组中的重复项】

【88.合并两个有序数组】

【125.验证回文串】

【234.回文链表】

【344.反转字符串】

随机数组

随机数组题目

【384.打乱数组】

洗牌算法典型题。

results matching ""

    No results matching ""