![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode
文章平均质量分 54
一颗磐石
这个作者很懒,什么都没留下…
展开
-
LeetCode(力扣) 234题:回文链表----三种方法求解附带详细注释
题目描述给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。示例输入:head = [1,2,2,1]输出:true输入:head = [1,2]输出:false思路分析看到这道题,相信很多朋友跟我一样,就想把链表里的元素放在列表里,然后判断列表是否为回文链表。当然这是第一种最简单直观容易想到的方法。但是有没有其他方法?能不能像证明回文字符串那样,采用双指针的方法来解决回文链表的问题呢?答案是可以的,但是需要用到递归原创 2021-08-20 17:34:18 · 1026 阅读 · 0 评论 -
LeetCode(力扣) 102题:二叉树的层序遍历----广度优先搜索(BFS)求解附带详细注释
题目描述给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。示例输入:二叉树:[3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7输出返回其层序遍历结果:[ [3], [9,20], [15,7]]思路分析题意是让我们按照层序从左到右的顺序对二叉树进行遍历。层序遍历,是从两个维度上来讲。第一为深度,我们必须要到达二叉树的最大深度才能对其完成遍历;第二为广度,我们原创 2021-08-19 21:35:24 · 279 阅读 · 0 评论 -
LeetCode(力扣) 209题:和大于等于 target 的最短子数组----滑动窗口求解附带详细注释
题目描述给定一个含有 n 个正整数的数组和一个正整数 target 。找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsinums_inumsi,numsi+1nums_{i+1}numsi+1, …, numsr−1nums_{r-1}numsr−1, numsrnums_rnumsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。示例输入:target = 7, nums = [2,3,1,2,4,3]输出:2解释:子数组 [4,3] 是该条件下原创 2021-08-18 17:35:00 · 1281 阅读 · 0 评论 -
LeetCode(力扣) 146题:LRU缓存机制----哈希表+双向链表求解附带详细注释
题目描述运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制 。实现 LRUCache 类:LRUCache(int capacity) 以正整数作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1void put(int key, int value) 如果关键字已经存在,则变更其数据值;如果关键字不存在,则插入该组「关键字-值」。当缓存容量达到上限时,它应该在写入新数据之前原创 2021-07-05 22:06:34 · 362 阅读 · 1 评论 -
LeetCode(力扣) 142题:环形链表 II----快慢指针求解附带详细注释
题目描述给定一个链表,返回链表开始入环的第一个节点,如果链表无环,则返回None。为了表示给定链表中的环,我们使用Pos来表示链表尾连接到链表中的位置(索引从0开始)。如果Pos = -1,则在该链表中没有环。注意,Pos仅仅适用于标识环的情况,并不会作为参数传递到函数中。说明:不允许修改给定的链表示例输入:head = [3,2,0,-4], pos = 1输出:返回索引为 1 的链表节点解释:链表中有一个环,其尾部连接到第二个节点。输入:head = [1,2], pos = 0原创 2021-07-05 11:28:48 · 262 阅读 · 0 评论 -
LeetCode(力扣) 93题:复原IP地址----回溯求解附带详细注释
题目描述给定一个只包含数字的字符串 s ,用以表示一个IP地址,返回所有可能从 s 中获得的有效IP地址,你可以按照任何顺序返回答案。有效IP地址由四个整数 (每个整数位于0-255之间,且不能含有前导 0 ) 组成,整数之间使用 ‘ . ’ 分隔。例如:“0.1.2.201” 和 “192.168.1.1” 是 有效 IP 地址,但是 “0.011.255.245”、“192.168.1.312” 和 “192.168@1.1” 是 无效 IP 地址。输入输出示例输入:s = "255255111原创 2021-07-04 22:22:59 · 411 阅读 · 4 评论 -
LeetCode(力扣) 312题:戳气球----动态规划求解附带详细注释
问题描述有n个气球,编号为 0 到 n-1,每个气球上都标有一个数字,这些数字存在于数组nums中。现在要求你戳破所有的气球。戳破第 i 个气球,你可以获得nums[i-1] * nums[i] * nums[i+1]枚硬币。这里的 i - 1 和 i + 1 代表和 i 相邻的两个气球的序号。如果 i - 1或 i + 1 超出了数组的边界,那么就当它是一个数字为 1 的气球。求所能获得硬币的最大数量。示例输入:nums = [3,1,5,8]输出:167解释:nums = [3,1,5,原创 2021-07-01 17:06:56 · 969 阅读 · 0 评论 -
LeetCode(力扣) 03题:无重复字符的最长子串----滑动窗口迭代求解附带详细注释
题目描述给定一个字符串,请你找出其中不含有重复字符的最长子串的长度,返回其长度。示例输入: s = "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。输入: s = "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。输入: s = ""输出: 0思路题目是让我们找出不包含重复元素的最长子串,那么一次遍历就够了,只要碰到重复元素,便直接取当前子串重复元素之后的部分继续往后遍历,最终选择最长的子串即原创 2021-07-01 11:42:38 · 176 阅读 · 1 评论 -
LeetCode(力扣) 92题:反转链表 II----双指针迭代方法求解附带详细注释
题目描述给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。示例输入:head = [1,2,3,4,5], left = 2, right = 4输出:[1,4,3,2,5]思路分析这道题其实和上次讲的“反转链表”那道题目很相似,上次是对整个链表进行反转,这次是取区间,对区间内的链表部分进行反转。思路上呢就是首先将要反转的链表从原链表中取出,对其进行反原创 2021-06-30 17:11:42 · 756 阅读 · 0 评论 -
LeetCode(力扣) 206题:反转链表----双指针迭代方法求解附带详细注释
问题描述给你单链表的头节点head,请你反转链表,并返回反转后的链表。示例输入:head = [1, 2, 3, 4, 5]输出:[5, 4, 3, 2, 1]思路分析看到题目描述与示例之后,没想到双指针方法也没想到递归方法哈哈哈,菜鸡实锤。自己第一反应是先遍历链表然后将链表的值按顺序储存在列表中,再创建一个新的链表,将列表中的值倒序赋给新链表。好笨哦,看了题解才知道双指针和递归的方法。在面试的时候,面试官大概率会让你在只改变指针方向的基础上做,所以上边的方法肯定不行啦,虽然它可以通过。双指原创 2021-06-30 15:19:05 · 238 阅读 · 0 评论 -
LeetCode(力扣) 91题:解码方法----动态规划求解附带详细注释
题目描述一条包含字母 A-Z 的消息通过以下映射进行了 编码 :‘A’ -> 1‘B’ -> 2…‘Z’ -> 26要解码已编码的消息,所有数字必须基于上述映射的方法,反向映射回字母(可能有多种方法)。例如,“11106” 可以映射为:“AAJF” ,将消息分组为 (1 1 10 6)“KJF” ,将消息分组为 (11 10 6)注意,消息不能分组为 (1 11 06) ,因为 “06” 不能映射为 “F” ,这是由于 “6” 和 “06” 在映射中并不等价。给你一个原创 2021-06-24 16:16:33 · 629 阅读 · 0 评论 -
LeetCode(力扣) 102题:二叉树的层序遍历----BFS求解附带详细注释
题目描述给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。示例二叉树:[3,9,20,null,null,15,7]返回结果:[ [3], [9,20], [15,7] ]问题分析在我印象里,二叉树的题目多半与DFS (深度优先搜索)、BFS (广度优先搜索)、递归等相关,大家在刷题的时候我也建议养成这种习惯,看到特定类型的题目首先往特定方法上靠。看到题目描述中 “逐层地,从左到右访问所有节点”, 从左到右想到广度优先搜索,在每一层用广度遍历二叉树的原创 2021-06-26 14:08:17 · 268 阅读 · 0 评论 -
LeetCode(力扣) 496题:下一个更大元素 I----栈+HashMap求解附带详细注释
题目描述给你两个 没有重复元素 的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集。请你找出 nums1 中每个元素在 nums2 中的下一个比其大的值。nums1 中数字 x 的下一个更大元素是指 x 在 nums2 中对应位置的右边的第一个比 x 大的元素。如果不存在,对应位置输出 -1 。示例:输入: nums1 = [4,1,2], nums2 = [1,3,4,2].输出: [-1,3,-1]解释:对于 num1 中的数字 4 ,你无法在第二个数组中找到下原创 2021-06-26 21:49:49 · 351 阅读 · 1 评论