【Leetcode刷题】一月汇总篇

举报
野猪佩奇996 发表于 2022/01/23 00:54:43 2022/01/23
【摘要】 学习总结 文章目录 学习总结Task 01:链表(4 天)第 01 天第 02 天第 03 天第 04 天 Task 02:堆栈与深度优先搜索(5 天)第 05 天第 06 天第 07 天第...

学习总结

Task 01:链表(4 天)

第 01 天

leetcode题号 题目 题解 注意事项
0707 设计链表 Python题解 哨兵节点
0206. 反转链表 题解-递归or迭代 递归or迭代
0203. 移除链表元素 C++题解 快慢指针

第 02 天

leetcode题号 题目 题解 注意事项
0328 奇偶链表 C++题解 双指针
0234. 回文链表 C++题解 链表 双指针
0138. 复制带随机指针的链表 C++题解 链表、哈希表

第 03 天

leetcode题号 题目 题解 注意事项
0148. 排序链表 Python题解 自顶向下-递归-归并排序
0021. 合并两个有序链表 完成
0147. 对链表进行插入排序 C++题解 偷懒直接用STL进行排序然后再连在一起

第 04 天

leetcode题号 题目 题解 注意事项
0141. 环形链表 完成 快慢指针
0142. 环形链表 II C++题解 快慢指针
0019. 删除链表的倒数第 N 个结点 C++题解

Task 02:堆栈与深度优先搜索(5 天)

第 05 天

leetcode题号 题目 题解 注意事项
0155. 最小栈 C++题解
0020. 有效的括号 C++题解
0227. 基本计算器 II C++题解

第 06 天

leetcode题号 题目 题解 注意事项
0150. 逆波兰表达式求值 C++题解
0394. 字符串解码 Python题解
0946. 验证栈序列 C++题解 还可以优化,使得空间复杂度为O(1)

第 07 天

leetcode题号 题目 题解 注意事项
0200. 岛屿数量 C++题解
0133. 克隆图 C++题解
0494. 目标和 C++题解

第 08 天

leetcode题号 题目 题解 注意事项
0841. 钥匙和房间 C++题解
0695. 岛屿的最大面积 C++题解
0130. 被围绕的区域 C++题解

第 09 天

leetcode题号 题目 题解 注意事项
0417. 太平洋大西洋水流问题 C++题解 逆向思考
1020. 飞地的数量 C++题解 和130差不多
1021. 统计封闭岛屿的数目 C++题解 2个双层for

Task 03 单调栈(1 天)

单调栈模板如下,首先下面版本的前提条件(可灵活改动)是找出nums数组中每个元素,对应的右边的第一个更大的元素值。我们利用一个辅助栈stack,从nums数组的最右边开始倒着遍历:

(1)每遍历到当前的元素A,将其和栈顶元素值比较大小,如果栈顶元素值小(矮子去掉)则pop掉,直到出现一个比A大的栈顶元素B;
(2)B即当前元素的res值。
(3)将A入栈,循环以上操作。

vector<int> nextGreaterElement(vector<int>& nums) {
    vector<int> res(nums.size()); // 存放答案的数组
    stack<int> s;
    // 倒着往栈里放
    for (int i = nums.size() - 1; i >= 0; i--) {
        // 判定个子高矮
        while (!s.empty() && s.top() <= nums[i]) {
            // 矮个起开,反正也被挡着了。。。
            s.pop();
        }
        // nums[i] 身后的 next great number
        res[i] = s.empty() ? -1 : s.top();
        // 
        s.push(nums[i]);
    }
    return res;
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

第 10 天

leetcode题号 题目 题解 注意事项
0496. 下⼀个更大元素 I C++题解
0739. 每日温度 C++题解
0316. 去除重复字母 C++题解 单调栈+哈希

Task 04:队列与广度优先搜索(3 天)

第 11 天

leetcode题号 题目 题解 注意事项
0622. 设计循环队列 C++题解 动态数组,牺牲一个节点或者vector都行
0346. 数据流中的移动平均值 C++题解 滑动窗口,队列
0225. 用队列实现栈 C++题解 辅助队列暂存元素

第 12 天

leetcode题号 题目 题解 注意事项
0286. 墙与门 C++题解 BFS
0752. 打开转盘锁 C++题解 BFS+哈希(可将哈希表改成set)
0279. 完全平方数 C++和Python题解 动态规划

第 13 天

leetcode题号 题目 题解 注意事项
0542 01矩阵
0322. 零钱兑换 C++题解 动态规划
剑指 Offer 13. 机器人的运动范围

Task 05 优先队列(1 天)

第 14 天

leetcode题号 题目 题解 注意事项
0215. 数组中的第K个最大元素 C++题解 小顶堆 priority_queue
347. 前 K 个高频元素 C++题解 重写排序cmp
451. 根据字符出现频率排序

学习总计划

在这里插入图片描述

文章来源: andyguo.blog.csdn.net,作者:山顶夕景,版权归原作者所有,如需转载,请联系作者。

原文链接:andyguo.blog.csdn.net/article/details/122380606

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。