leetcode
leetcode刷题,按照题库顺序
falldeep
远和近
展开
-
LeetCode136. 只出现一次的数字(C++位运算)
给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。示例 1 :输入:nums = [2,2,1]输出:1示例 2 :输入:nums = [4,1,2,1,2]输出:4示例 3 :输入:nums = [1]输出:1 提示:1原创 2022-12-05 09:26:46 · 582 阅读 · 0 评论 -
LeetCode198. 打家劫舍(C++动态规划中等题)
你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。示例 1:输入:[1,2,3,1]输出:4解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。 偷窃到的最高金额 = 1 + 3 = 4 。示例 2:输入:[2,7,9,3原创 2022-12-03 12:17:18 · 179 阅读 · 0 评论 -
LeetCode70. 爬楼梯(C++动态规划简单题)
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?示例 1:输入:n = 2输出:2解释:有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入:n = 3输出:3解释:有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶2. 1 阶 + 2 阶3. 2 阶 + 1 阶 提示:1原创 2022-12-03 11:54:31 · 1120 阅读 · 0 评论 -
LeetCode77. 组合(C++中等题)
给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。你可以按 任何顺序 返回答案。原创 2022-12-02 16:40:47 · 383 阅读 · 0 评论 -
LeetCode994. 腐烂的橘子(C++中等题)
在给定的 m x n 网格 grid 中,每个单元格可以有以下三个值之一:值 0 代表空单元格;值 1 代表新鲜橘子;值 2 代表腐烂的橘子。每分钟,腐烂的橘子 周围 4 个方向上相邻 的新鲜橘子都会腐烂。返回 直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。如果不可能,返回 -1。示例 1:输入:grid = [[2,1,1],[1,1,0],[0,1,1]]输出:4示例 2:输入:grid = [[2,1,1],[0,1,1],[1,0,1]]输出:-1。原创 2022-11-30 11:40:04 · 877 阅读 · 0 评论 -
LeetCode542. 01 矩阵(C++中等题)
给定一个由 0 和 1 组成的矩阵 mat ,请输出一个大小相同的矩阵,其中每一个格子是 mat 中对应位置元素到最近的 0 的距离。两个相邻元素间的距离为 1。示例 1:输入:mat = [[0,0,0],[0,1,0],[0,0,0]]输出:[[0,0,0],[0,1,0],[0,0,0]]示例 2:输入:mat = [[0,0,0],[0,1,0],[1,1,1]]输出:[[0,0,0],[0,1,0],[1,2,1]]提示:mat 中至少有一个 0。原创 2022-11-30 11:18:08 · 387 阅读 · 0 评论 -
LeetCode116. 填充每个节点的下一个右侧节点指针
给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:int val;}填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有 next 指针都被设置为 NULL。示例 1:输入:root = [1,2,3,4,5,6,7]输出:[1,#,2,3,#,4,5,6,7,#]原创 2022-11-29 15:33:48 · 114 阅读 · 0 评论 -
LeetCode617. 合并二叉树(C++)
给你两棵二叉树: root1 和 root2。想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)。你需要将这两棵树合并成一棵新二叉树。合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;否则,不为 null 的节点将直接作为新二叉树的节点。返回合并后的二叉树。注意: 合并过程必须从两个树的根节点开始。示例 1:输入:root1 = [1,3,2,5], root2 = [2,1,3,null,4,null,7]原创 2022-11-29 14:45:50 · 128 阅读 · 0 评论 -
LeetCode695. 岛屿的最大面积(C++中等题)
给你一个大小为 m x n 的二进制矩阵 grid。岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在 水平或者竖直的四个方向上 相邻。你可以假设 grid 的四个边缘都被 0(代表水)包围着。岛屿的面积是岛上值为 1 的单元格的数目。计算并返回 grid 中最大的岛屿面积。如果没有岛屿,则返回面积为 0。原创 2022-11-28 10:07:32 · 200 阅读 · 0 评论 -
LeetCode567. 字符串的排列(C++中等题)
给你两个字符串 s1 和 s2 ,写一个函数来判断 s2 是否包含 s1 的排列。如果是,返回 true;否则,返回 false。换句话说,s1 的排列之一是 s2 的 子串。示例 1:输入:s1 = "ab" s2 = "eidbaooo"输出:true解释:s2 包含 s1 的排列之一 ("ba").示例 2:输入:s1= "ab" s2 = "eidboaoo"输出:false提示:s1 和 s2 仅包含小写字母。原创 2022-11-27 12:48:17 · 407 阅读 · 0 评论 -
LeetCode189. 轮转数组(C++数组翻转算法)
给你一个数组,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。原创 2022-11-23 09:39:51 · 328 阅读 · 0 评论 -
LeetCode153. 寻找旋转排序数组中的最小值(C++)
中等难度已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums = [0,1,2,4,5,6,7] 在变化后可能得到:若旋转 4 次,则可以得到 [4,5,6,7,0,1,2]若旋转 7 次,则可以得到 [0,1,2,4,5,6,7]注意,数组 [a[0], a[1], a[2], ..., a[n-1]] 旋转一次 的结果为数组 [a[n-1], a[0], a[1], a[2], ..., a[n-2]]。原创 2022-11-14 09:46:11 · 360 阅读 · 0 评论 -
LeetCode刷题顺序(新手入门)
移动零给定一个数组nums,编写一个函数将所有0移动到数组的末尾,同时保持非零元素的相对顺序。请注意,必须在不复制数组的情况下原地对数组进行操作。难点就是不复制原数组要原地修改,解法为设置一个res,记录前面的0的个数,每次插入时只要插入到nums[i - res]中即可移除元素给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。原创 2022-11-06 11:35:26 · 4176 阅读 · 0 评论 -
LeetCode118. 杨辉三角(C++)
给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。原创 2022-11-13 11:10:51 · 240 阅读 · 0 评论 -
LeetCode151. 反转字符串中的单词(C++)
给你一个字符串 s ,请你反转字符串中 单词 的顺序。单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。注意:输入字符串 s中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。原创 2022-11-11 12:06:16 · 310 阅读 · 0 评论 -
LeetCode498. 对角线遍历(C++)
给你一个大小为 m x n 的矩阵 mat ,请以对角线遍历的顺序,用一个数组返回这个矩阵中的所有元素。原创 2022-11-06 11:10:16 · 719 阅读 · 0 评论 -
LeetCode88. 合并两个有序数组(C++)
本题采用两种方法解决,1.格外空间2.尾部双指针给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n。原创 2022-10-28 10:36:32 · 428 阅读 · 0 评论 -
LeetCode75. 颜色分类(C++)
本地是著名的荷兰国旗问题,本题解法为遍历数组一次的算法。给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums ,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。必须在不使用库的sort函数的情况下解决这个问题。原创 2022-10-28 10:30:09 · 418 阅读 · 0 评论 -
LeetCode221. 最大正方形(C++)DP
在一个由 '0' 和 '1' 组成的二维矩阵内,找到只包含 '1' 的最大正方形,并返回其面积。原创 2022-10-26 12:18:54 · 216 阅读 · 0 评论 -
LeetCode21. 合并两个有序链表(C++)
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例 1:输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]示例 2:输入:l1 = [], l2 = []输出:[]示例 3:输入:l1 = [], l2 = [0]输出:[0]提示:两个链表的节点数目范围是 [0, 50]l1 和 l2 均按 非递减顺序 排列。原创 2022-10-26 09:39:44 · 594 阅读 · 0 评论 -
leetcode6224. 最大公因数等于 K 的子数组数目(C++暴力解法)
给你一个整数数组 nums 和一个整数 k ,请你统计并返回 nums 的子数组中元素的最大公因数等于 k 的子数组数目。子数组 是数组中一个连续的非空序列。数组的最大公因数 是能整除数组中所有元素的最大整数。示例 1:输入:nums = [9,3,1,2,6,3], k = 3输出:4解释:nums 的子数组中,以 3 作为最大公因数的子数组如下:示例 2:输入:nums = [4], k = 7输出:0解释:不存在以 7 作为最大公因数的子数组。原创 2022-10-24 14:33:07 · 1340 阅读 · 0 评论 -
leetcode9. 回文数(C++)
给你一个整数 x ,如果 x 是一个回文整数,返回 true;否则,返回 false。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。示例 1:输入:x = 121输出:true示例 2:输入:x = -121输出:false解释:从左向右读, 为 -121。从右向左读, 为 121-。因此它不是一个回文数。示例 3:输入:x = 10输出:false解释:从右向左读, 为 01。因此它不是一个回文数。原创 2022-10-21 16:03:16 · 320 阅读 · 0 评论 -
leetcode8. 字符串转换整数 (atoi)C++
请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数)。函数 myAtoi(string s) 的算法如下:读入字符串并丢弃无用的前导空格检查下一个字符(假设还未到字符末尾)为正还是负号,读取该字符(如果有)。确定最终结果是负数还是正数。如果两者都不存在,则假定结果为正。读入下一个字符,直到到达下一个非数字字符或到达输入的结尾。字符串的其余部分将被忽略。原创 2022-10-21 15:46:33 · 152 阅读 · 0 评论 -
leetcode7. 整数反转(C++)
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)。示例 1:输入:x = 123输出:321示例 2:输入:x = -123输出:-321示例 3:输入:x = 120输出:21示例 4:输入:x = 0输出:0提示:通过次数1,105,858提交次数3,125,702。原创 2022-10-20 15:31:17 · 244 阅读 · 0 评论 -
leetcode6. Z 字形变换(C++)
将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 "PAYPALISHIRING" 行数为 3 时,排列如下:Y I R之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"PAHNAPLSIIGYIR"。原创 2022-10-20 11:34:07 · 375 阅读 · 0 评论 -
leetcode5. 最长回文子串(java)
给你一个字符串 s,找到 s 中最长的回文子串。示例 1:输入:s = "babad"输出:"bab"解释:"aba" 同样是符合题意的答案。示例 2:输入:s = "cbbd"输出:"bb"提示:s 仅由数字和英文字母组成通过次数1,231,943提交次数3,311,642。原创 2022-10-19 23:12:05 · 348 阅读 · 0 评论 -
Leetcode4.寻找两个正序数组的中位数C++
给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数。算法的时间复杂度应该为 O(log (m+n))。示例 1:输入:nums1 = [1,3], nums2 = [2]输出:2.00000解释:合并数组 = [1,2,3] ,中位数 2示例 2:输入:nums1 = [1,2], nums2 = [3,4]输出:2.50000。原创 2022-10-19 23:09:17 · 310 阅读 · 0 评论