LeetCode刷题日记
文章平均质量分 84
梁潇一
仰望星空,脚踏实地,体验世间真实。
展开
-
LeetCode刷题日记之设计循环双端队列-链表实现
循环双端队列的链表实现原创 2023-11-16 12:01:06 · 40 阅读 · 0 评论 -
LeetCode刷题日记之反转链表
今天来看一道简单但是比较常考的题,题的解法是很简单的,递归代码的话硬背都能记住,但真的把代码逻辑理清的人不是很多。我希望你看完看完这篇文章之后能把递归和迭代的思路整个理清楚,代码为什么会那么写,从而摆脱背的困境。 先看下题: 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入:head = [1,2,3,4,5] 输出:[5,4,3,2,1] 递归 我们先来看看递归解法,递归首先是找递归终止条件,这里我们假定是原函数就是递归调用函数,原函数是需要返回一个ListNode原创 2021-05-23 12:53:34 · 85 阅读 · 0 评论 -
LeetCode刷题日记盛最多水的容器
节后第一天,鉴于五一五天都没做过题,有点遗忘了,今天来看一道简单点的题,练下手。 先看下题: 给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 输入:[1,8,6,2,5,4,8,3,7] 输出:49 解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色原创 2021-05-19 11:34:39 · 78 阅读 · 0 评论 -
LeetCode刷题日记之前K个高频元素
前K个高频元素,这是一个很有代表性的问题,在实际生活中的应用场景其实也很多,比如微博里每天统计实时热点信息等。 先看下题: 给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。 示例 1: 输入: nums = [1,1,1,2,2,3], k = 2 输出: [1,2] 进阶:你所设计算法的时间复杂度 必须 优于 O(n log n) ,其中 n 是数组大小。 这道题的进阶要求时间复杂度要优于O(nlogn),那一般的快排,归并等就可以抛弃原创 2021-05-19 11:33:04 · 705 阅读 · 0 评论 -
LeetCode刷题日记之滑动窗口最大值
今天来看下LeetCode第239题-滑动窗口最大值。 首先看下题: 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回滑动窗口中的最大值。 输入:nums = [1,3,-1,-3,5,3,6,7], k = 3 输出:[3,3,5,5,6,7] 解释: 滑动窗口的位置 最大值 [1 3 -1] -3 5 3 6 7 3 1 [3 -1原创 2021-05-19 11:10:05 · 165 阅读 · 0 评论 -
LeetCode刷题日记之柱状图中的最大面积
LeetCode第84题,运用单调递增栈求柱状图的最大面积,这个思想还是很巧妙的,记录下解题思路。 先看下题: 给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来的矩形的最大面积。 示例: 输入: [2,1,5,6,2,3] 输出: 10 其实我没看题解之前我是完全懵逼,直接用暴力法求解,然后超时。后面看完题解之后才意识到既然还能用栈去解,想出这个解法的人真的对栈这种数据结构理解的太通透了。 但是当你看懂其实思路还是很简单的。 请跟着我原创 2021-05-19 11:07:35 · 179 阅读 · 0 评论 -
LeetCode刷题日记之设计循环双端队列
这篇文章是对LeetCode641题设计循环双端队列思路进行记录。(PS:后续应该还会在写一篇,等我把双向链表实现搞清楚了,一个指针还能理清,两个指针pre和next看着就有点晕了,等我消化下。) 先看下题: 设计实现双端队列。 你的实现需要支持以下操作: MyCircularDeque(k):构造函数,双端队列的大小为k。 insertFront():将一个元素添加到双端队列头部。 如果操作成功返回 true。 insertLast():将一个元素添加到双端队列尾部。如果操作成功返回 true。 del原创 2021-05-19 11:04:36 · 129 阅读 · 0 评论 -
LeetCode刷题日志之K个一组翻转链表
今天刷到LeetCode第25题,记录一下刷题的思路,方便以后回看。(真的一周不写就容易忘啊,所以还是要多练) 这个题大概有三种解法: 借助栈先进后出的思路,当链表元素k个一组放进栈中,然后在拿出来。(缺点是时间复杂度较高,入栈出栈都要遍历链表,不推荐,了解思路即可)。 递归:k个一组进行递归,具体思路请参考后面图解。 迭代:同上,参考后面图解。 话不多说,先上代码: 借助栈 Deque<ListNode> stack = new LinkedList<>();原创 2021-05-13 23:23:29 · 96 阅读 · 0 评论