
力扣刷题专栏
乱丢蘑菇的小Teemo
索然无味
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
116. 填充每个节点的下一个右侧节点指针
116. 填充每个节点的下一个右侧节点指针给定一个完美二叉树,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:struct Node { int val; Node *left; Node *right; Node *next;}填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为NULL。初始状态下,所有next 指针都被设置为NULL。进阶:你只能使用常量级额外空间...原创 2021-09-13 22:11:36 · 110 阅读 · 0 评论 -
695. 岛屿的最大面积
695. 岛屿的最大面积给定一个包含了一些0和1的非空二维数组grid。一个岛屿是由一些相邻的1(代表土地) 构成的组合,这里的「相邻」要求两个1必须在水平或者竖直方向上相邻。你可以假设grid的四个边缘都被0(代表水)包围着。找到给定的二维数组中最大的岛屿面积。(如果没有岛屿,则返回面积为0。)示例 1:[[0,0,1,0,0,0,0,1,0,0,0,0,0], [0,0,0,0,0,0,0,1,1,1,0,0,0], [0,1,1,0,1,...原创 2021-09-13 17:42:38 · 69 阅读 · 0 评论 -
617. 合并二叉树
617. 合并二叉树给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为NULL 的节点将直接作为新二叉树的节点。示例1:输入: Tree 1 Tree 2 1 2 ..原创 2021-09-13 17:43:00 · 153 阅读 · 1 评论 -
733. 图像渲染(广度优先搜索 / 深度优先搜索)
733. 图像渲染有一幅以二维整数数组表示的图画,每一个整数表示该图画的像素值大小,数值在 0 到 65535 之间。给你一个坐标(sr, sc)表示图像渲染开始的像素值(行 ,列)和一个新的颜色值newColor,让你重新上色这幅图像。为了完成上色工作,从初始坐标开始,记录初始坐标的上下左右四个方向上像素值与初始坐标相同的相连像素点,接着再记录这四个方向上符合条件的像素点与他们对应四个方向上像素值与初始坐标相同的相连像素点,……,重复该过程。将所有有记录的像素点的颜色值改为新的颜色值。...原创 2021-09-12 20:06:29 · 110 阅读 · 0 评论 -
567. 字符串的排列(滑动窗口)
567. 字符串的排列给你两个字符串s1和s2,写一个函数来判断s2是否包含s1的排列。换句话说,s1的排列之一是s2的子串。示例 1:输入:s1 = "ab" s2 = "eidbaooo"输出:true解释:s2 包含 s1 的排列之一 ("ba").示例 2:输入:s1= "ab" s2 = "eidboaoo"输出:false提示:1 <= s1.length, s2.length <= 104 s1和s2仅包...原创 2021-09-12 16:43:56 · 103 阅读 · 0 评论 -
3. 无重复字符的最长子串(滑动窗口)
3. 无重复字符的最长子串给定一个字符串s,请你找出其中不含有重复字符的最长子串的长度。示例1:输入: s = "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: s = "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: s = "pwwkew"输出: 3解释: 因为无重复字符的最长子串是"wke",所以其长度为 3。 ...原创 2021-09-10 14:34:51 · 85 阅读 · 0 评论 -
19. 删除链表的倒数第 N 个结点(双指针)
19. 删除链表的倒数第 N 个结点难度中等1553收藏分享切换为英文关闭提醒反馈给你一个链表,删除链表的倒数第n个结点,并且返回链表的头结点。进阶:你能尝试使用一趟扫描实现吗?示例 1:输入:head = [1,2,3,4,5], n = 2输出:[1,2,3,5]示例 2:输入:head = [1], n = 1输出:[]示例 3:输入:head = [1,2], n = 1输出:[1]提示:链表中结点的数目为sz 1 &...原创 2021-09-10 10:43:01 · 71 阅读 · 0 评论 -
876. 链表的中间结点(快慢双指针)
876. 链表的中间结点难度简单400收藏分享切换为英文接收动态反馈给定一个头结点为head的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。示例 1:输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返回了一个 ListNode 类型的对象 ans,这样:ans.val = 3, ans.next.val = 4, ans.n..原创 2021-09-09 16:44:56 · 74 阅读 · 0 评论 -
557. 反转字符串中的单词 III(双指针)
557. 反转字符串中的单词 III难度简单326收藏分享切换为英文接收动态反馈给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。示例:输入:"Let's take LeetCode contest"输出:"s'teL ekat edoCteeL tsetnoc"提示:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。class Solution {public: void Reverse(strin原创 2021-09-08 21:12:32 · 85 阅读 · 0 评论 -
344. 反转字符串(双指针)
344. 反转字符串难度简单448收藏分享切换为英文接收动态反馈编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组char[]的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是ASCII码表中的可打印字符。示例 1:输入:["h","e","l","l","o"]输出:["o","l","l","e","h"]示例 2:输入:["H","a","n","...原创 2021-09-08 20:58:28 · 79 阅读 · 0 评论 -
167. 两数之和 II - 输入有序数组(双指针)
167. 两数之和 II - 输入有序数组难度简单577给定一个已按照非递减顺序排列的整数数组numbers,请你从数组中找出两个数满足相加之和等于目标数target。函数应该以长度为2的整数数组的形式返回这两个数的下标值。numbers的下标从 1 开始计数,所以答案数组应当满足1 <= answer[0] < answer[1] <= numbers.length。你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素...原创 2021-09-08 00:02:58 · 91 阅读 · 0 评论 -
283. 移动零(双指针)
283. 移动零难度简单1211给定一个数组nums,编写一个函数将所有0移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。 尽量减少操作次数。class Solution {public: void moveZeroes(vector<int>& nums) { int Tmp = 0 ; //记录0的个数 ...原创 2021-09-07 23:52:58 · 333 阅读 · 0 评论 -
189. 旋转数组(3种方法 环状替换法 3次翻转法)
189. 旋转数组难度中等1108给定一个数组,将数组中的元素向右移动k个位置,其中k是非负数。进阶:尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。 你可以使用空间复杂度为O(1) 的原地算法解决这个问题吗?示例 1:输入: nums = [1,2,3,4,5,6,7], k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转...原创 2021-09-07 23:41:04 · 138 阅读 · 0 评论 -
977. 有序数组的平方(这题可以练习一下各种排序 双指针)
977. 有序数组的平方难度简单290给你一个按非递减顺序排序的整数数组nums,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。示例 1:输入:nums = [-4,-1,0,3,10]输出:[0,1,9,16,100]解释:平方后,数组变为 [16,1,0,9,100]排序后,数组变为 [0,1,9,16,100]示例 2:输入:nums = [-7,-3,2,3,11]输出:[4,9,9,49,121]提示:1 <= n...原创 2021-09-06 10:13:54 · 98 阅读 · 0 评论 -
35. 搜索插入位置(二分法)
35. 搜索插入位置难度简单1051给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为O(log n)的算法。示例 1:输入: nums = [1,3,5,6], target = 5输出: 2示例2:输入: nums = [1,3,5,6], target = 2输出: 1示例 3:输入: nums = [1,3,5,6], target = 7输出: ...原创 2021-09-05 16:55:39 · 115 阅读 · 0 评论 -
278. 第一个错误的版本(二分法)
278. 第一个错误的版本难度简单399你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。假设你有n个版本[1, 2, ..., n],你想找出导致之后所有版本出错的第一个错误的版本。你可以通过调用bool isBadVersion(version)接口来判断版本号version是否在单元测试中出错。实现一个函数来查找第一个错误的版本。你应该尽量减少对调用 A...原创 2021-09-05 15:39:45 · 95 阅读 · 0 评论 -
704. 二分查找
class Solution {public: int search(vector<int>& nums, int target) { int Left = 0 ; int Right = nums.size()-1; int Middle = (Left + Right)/2 ; while(Left <= Right){ if(target == nums[Middle]) .原创 2021-09-05 15:14:51 · 87 阅读 · 0 评论