![](https://img-blog.csdnimg.cn/20210323205814950.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
LeetCode
少刷微博少追剧,多刷力扣多睡觉。
打盹码农
不要打盹了。
展开
-
Leetcode 19. 删除链表的倒数第 N 个结点
删除链表的倒数第 N 个结点原创 2022-07-31 15:24:14 · 131 阅读 · 0 评论 -
Leetcode 66. 加一
66. 加一给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例1:输入:digits = [1,2,3]输出:[1,2,4]解释:输入数组表示数字 123。示例2:输入:digits = [4,3,2,1]输出:[4,3,2,2]解释:输入数组表示数字 4321。示例 3:输入:digits = [0]输出:...转载 2021-06-04 11:04:17 · 82 阅读 · 0 评论 -
Leetcode 6. Z 字形变换
6. Z 字形变换难度中等1167将一个给定字符串s根据给定的行数numRows,以从上往下、从左到右进行Z 字形排列。比如输入字符串为"PAYPALISHIRING"行数为3时,排列如下:P A H NA P L S I I GY I R之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"PAHNAPLSIIGYIR"。请你实现这个将字符串进行指定行数变换的函数:string convert(string s, in...原创 2021-06-03 16:55:50 · 86 阅读 · 0 评论 -
Leetcode 810. 黑板异或游戏
810. 黑板异或游戏黑板上写着一个非负整数数组nums[i]。Alice 和 Bob 轮流从黑板上擦掉一个数字,Alice 先手。如果擦除一个数字后,剩余的所有数字按位异或运算得出的结果等于 0 的话,当前玩家游戏失败。(另外,如果只剩一个数字,按位异或运算得到它本身;如果无数字剩余,按位异或运算结果为0。)并且,轮到某个玩家时,如果当前黑板上所有数字按位异或运算结果等于 0,这个玩家获胜。假设两个玩家每步都使用最优解,当且仅当 Alice 获胜时返回true。示例:输入...原创 2021-05-31 18:45:17 · 124 阅读 · 0 评论 -
Leetcode 1486. 数组异或操作
1486. 数组异或操作给你两个整数,n和start。数组nums定义为:nums[i] = start + 2*i(下标从 0 开始)且n == nums.length。请返回nums中所有元素按位异或(XOR)后得到的结果。示例 1:输入:n = 5, start = 0输出:8解释:数组 nums 为 [0, 2, 4, 6, 8],其中 (0 ^ 2 ^ 4 ^ 6 ^ 8) = 8 。 "^" 为按位异或 XOR 运算符。示例 2:...原创 2021-05-07 23:59:27 · 92 阅读 · 0 评论 -
Leetcode 938. 二叉搜索树的范围和
938. 二叉搜索树的范围和给定二叉搜索树的根结点root,返回值位于范围[low, high]之间的所有结点的值的和。示例 1:输入:root = [10,5,15,3,7,null,18], low = 7, high = 15输出:32示例 2:输入:root = [10,5,15,3,7,13,18,1,null,6], low = 6, high = 10输出:23提示:树中节点数目在范围[1, 2 * 104]内 1 <= No...原创 2021-04-27 11:07:34 · 92 阅读 · 0 评论 -
Leetcode 34. 在排序数组中查找元素的第一个和最后一个位置
34. 在排序数组中查找元素的第一个和最后一个位置给定一个按照升序排列的整数数组nums,和一个目标值target。找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值target,返回[-1, -1]。进阶:你可以设计并实现时间复杂度为O(log n)的算法解决此问题吗?示例 1:输入:nums = [5,7,7,8,8,10], target = 8输出:[3,4]示例2:输入:nums = [5,7,7,8,8,10], target ...原创 2021-04-26 15:43:31 · 110 阅读 · 0 评论 -
Leetcode 1011. 在 D 天内送达包裹的能力
1011. 在 D 天内送达包裹的能力传送带上的包裹必须在 D 天内从一个港口运送到另一个港口。传送带上的第i个包裹的重量为weights[i]。每一天,我们都会按给出重量的顺序往传送带上装载包裹。我们装载的重量不会超过船的最大运载重量。返回能在D天内将传送带上的所有包裹送达的船的最低运载能力。示例 1:输入:weights = [1,2,3,4,5,6,7,8,9,10], D = 5输出:15解释:船舶最低载重 15 就能够在 5 天内送达所有包裹,如下所示:第...原创 2021-04-26 14:43:23 · 111 阅读 · 0 评论 -
Leetcode 897. 递增顺序搜索树
897. 递增顺序搜索树我以为我比较擅长递归,但是事实证明是迭代,我的脑子好像转不过来去理解抽象的东西。每次解题都是一个一步一步笨笨探索的过程。给你一棵二叉搜索树,请你按中序遍历将其重新排列为一棵递增顺序搜索树,使树中最左边的节点成为树的根节点,并且每个节点没有左子节点,只有一个右子节点。示例 1:输入:root = [5,3,6,2,4,null,8,1,null,null,null,7,9]输出:[1,null,2,null,3,null,4,null,5,null,...原创 2021-04-25 09:49:59 · 107 阅读 · 0 评论 -
Leetcode 10. 正则表达式匹配
10. 正则表达式匹配动态规划你杀了我吧给你一个字符串s和一个字符规律p,请你来实现一个支持'.'和'*'的正则表达式匹配。'.'匹配任意单个字符 '*'匹配零个或多个前面的那一个元素所谓匹配,是要涵盖整个字符串s的,而不是部分字符串。示例 1:输入:s = "aa" p = "a"输出:false解释:"a" 无法匹配 "aa" 整个字符串。示例 2:输入:s = "aa" p = "a*"输出:true解释:因为 '*' 代表可以匹...原创 2021-04-24 21:38:08 · 81 阅读 · 0 评论 -
LeetCode 5. 最长回文子串
5. 最长回文子串给你一个字符串s,找到s中最长的回文子串。示例 1:输入:s = "babad"输出:"bab"解释:"aba" 同样是符合题意的答案。示例 2:输入:s = "cbbd"输出:"bb"示例 3:输入:s = "a"输出:"a"示例 4:输入:s = "ac"输出:"a"提示:1 <= s.length <= 1000 s仅由数字和英文字母(大写和/或小写)组成/** 是否是回文?...原创 2021-04-24 16:41:35 · 83 阅读 · 0 评论 -
Leetcode 300. 最长递增子序列
300. 最长递增子序列//我居然为了一个四月勋章提交了题解区的答案,这不是勋章,是耻辱。给你一个整数数组nums,找到其中最长严格递增子序列的长度。子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7]是数组[0,3,1,6,2,2,7]的子序列。示例 1:输入:nums = [10,9,2,5,3,7,101,18]输出:4解释:最长递增子序列是 [2,3,7,101],因此长度为 4 。示例 2:输入...原创 2021-04-24 10:26:54 · 97 阅读 · 0 评论 -
Leetcode 678. 有效的括号字符串
678. 有效的括号字符串贪心解法好牛啊,但是我没怎么懂...给定一个只包含三种字符的字符串:(,)和*,写一个函数来检验这个字符串是否为有效字符串。有效字符串具有如下规则:任何左括号(必须有相应的右括号)。 任何右括号)必须有相应的左括号(。 左括号(必须在对应的右括号之前)。 *可以被视为单个右括号),或单个左括号(,或一个空字符串。 一个空字符串也被视为有效字符串。示例 1:输入: "()"输出: True示例 2:输入:...原创 2021-04-22 20:26:17 · 73 阅读 · 0 评论 -
Leetcode 363. 矩形区域不超过 K 的最大数值和
363. 矩形区域不超过 K 的最大数值和给你一个m x n的矩阵matrix和一个整数k,找出并返回矩阵内部矩形区域的不超过k的最大数值和。题目数据保证总会存在一个数值和不超过k的矩形区域。示例 1:输入:matrix = [[1,0,1],[0,-2,3]], k = 2输出:2解释:蓝色边框圈出来的矩形区域[[0, 1], [-2, 3]]的数值和是 2,且 2 是不超过 k 的最大数字(k = 2)。示例 2:输入:matrix = [[...原创 2021-04-22 18:34:44 · 101 阅读 · 0 评论 -
Leetcode 区域和检索
303. 区域和检索 - 数组不可变给定一个整数数组 nums,求出数组从索引i到j(i≤j)范围内元素的总和,包含i、j两点。class NumArray { int[] sums; public NumArray(int[] nums) { sums=new int[nums.length+1];//前缀和数组长度设置为数组长度+1,避免判断left=0的情况 sums[0]=0;//left=0时,right前缀和只需要-0...原创 2021-04-22 18:33:49 · 103 阅读 · 0 评论 -
剑指 Offer 66. 构建乘积数组
剑指 Offer 66. 构建乘积数组给定一个数组A[0,1,…,n-1],请构建一个数组B[0,1,…,n-1],其中B[i]的值是数组A中除了下标i以外的元素的积, 即B[i]=A[0]×A[1]×…×A[i-1]×A[i+1]×…×A[n-1]。不能使用除法。示例:输入: [1,2,3,4,5]输出: [120,60,40,30,24]提示:所有元素乘积之和不会溢出 32 位整数 a.length <= 100000参考题解,很牛!!!https...转载 2021-04-21 18:25:18 · 63 阅读 · 0 评论 -
剑指 Offer 63. 股票的最大利润
剑指 Offer 63. 股票的最大利润假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少?示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格。示例 2:输入: [7,6,4,3,1]输出: 0解释: 在这种情况下, 没有交易完成.原创 2021-04-21 15:29:13 · 70 阅读 · 0 评论 -
剑指 Offer 62. 圆圈中最后剩下的数字
剑指 Offer 62. 圆圈中最后剩下的数字数学烂确实是无药可救的.....0,1,···,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字(删除后从下一个数字开始计数)。求出这个圆圈里剩下的最后一个数字。例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数字依次是2、0、4、1,因此最后剩下的数字是3。示例 1:输入: n = 5, m = 3输出:3示例 2:输入: n = 10, m ...原创 2021-04-21 14:40:20 · 77 阅读 · 0 评论 -
Leetcode 28. 实现 strStr()
28. 实现 strStr()这怎么是简单题啊,死了算了。。。。。实现strStr()函数。给你两个字符串haystack和needle,请你在haystack字符串中找出needle字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回-1。说明:当needle是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。对于本题而言,当needle是空字符串时我们应当返回 0 。这与 C 语言的strstr()以及 Java...原创 2021-04-20 21:37:06 · 80 阅读 · 0 评论 -
剑指 Offer 59 - I. 滑动窗口的最大值
剑指 Offer 59 - I. 滑动窗口的最大值给定一个数组nums和滑动窗口的大小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 -3] 5 ...原创 2021-04-19 18:51:35 · 72 阅读 · 0 评论 -
剑指 Offer 39. 数组中出现次数超过一半的数字
剑指 Offer 39. 数组中出现次数超过一半的数字数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例1:输入: [1, 2, 3, 2, 2, 2, 5, 4, 2]输出: 2限制:1 <= 数组长度 <= 50000存个没学过的解法,很有意思。摩尔投票法:https://leetcode-cn.com/problems/shu-zu-zhong-chu-xian-ci-shu-ch..转载 2021-04-16 19:04:35 · 84 阅读 · 0 评论 -
剑指 Offer 17. 打印从1到最大的n位数
剑指 Offer 17. 打印从1到最大的n位数输入数字n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。示例 1:输入: n = 1输出: [1,2,3,4,5,6,7,8,9]/** 分治递归: 从小到最大的n位数实质是{0~9}在n位上的全排列,大数问题转字符串解决。 固定前n-1位,第n位遍历{0~9} . . . 需..原创 2021-04-12 10:22:37 · 93 阅读 · 0 评论 -
Leetcode 264. 丑数 II
264. 丑数 II给你一个整数n,请你找出并返回第n个丑数。丑数就是只包含质因数2、3和/或5的正整数。示例 1:输入:n = 10输出:12解释:[1, 2, 3, 4, 5, 6, 8, 9, 10, 12] 是由前 10 个丑数组成的序列。示例 2:输入:n = 1输出:1解释:1 通常被视为丑数。/** 三指针超吊! p2,p3,p5表示位置[p2,p3,p5]的值分别可以乘2,3,5 如果当...原创 2021-04-11 19:43:36 · 70 阅读 · 0 评论 -
剑指 Offer 14- I. 剪绳子
剑指 Offer 14- I. 剪绳子给你一根长度为n的绳子,请把绳子剪成整数长度的m段(m、n都是整数,n>1并且m>1),每段绳子的长度记为k[0],k[1]...k[m-1]。请问k[0]*k[1]*...*k[m-1]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。示例 1:输入: 2输出: 1解释: 2 = 1 + 1, 1 × 1 = 1示例2:输入: 10输出: 36...原创 2021-04-10 19:32:15 · 73 阅读 · 0 评论 -
剑指 Offer 12. 矩阵中的路径
剑指 Offer 12. 矩阵中的路径难度中等295给定一个m x n二维字符网格board和一个字符串单词word。如果word存在于网格中,返回true;否则,返回false。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。例如,在下面的 3×4 的矩阵中包含单词 "ABCCED"(单词中的字母已标出)。示例 1:输入:board = [["A...转载 2021-04-10 15:17:51 · 69 阅读 · 0 评论 -
Leetcode 搜索旋转排序数组 II
81. 搜索旋转排序数组 II已知存在一个按非降序排列的整数数组nums,数组中的值不必互不相同。在传递给函数之前,nums在预先未知的某个下标k(0 <= k < nums.length)上进行了旋转,使数组变为[nums[k], nums[k+1], ..., nums[n-1], nums[0], nums[1], ..., nums[k-1]](下标从 0 开始计数)。例如,[0,1,2,4,4,4,5,6,6,7]在下标5处经旋转后可能变为[4,5...原创 2021-04-07 11:17:00 · 65 阅读 · 0 评论 -
LCP21 魔塔游戏
LCP 30. 魔塔游戏难度中等10收藏分享切换为英文接收动态反馈小扣当前位于魔塔游戏第一层,共有N个房间,编号为0 ~ N-1。每个房间的补血道具/怪物对于血量影响记于数组nums,其中正数表示道具补血数值,即血量增加对应数值;负数表示怪物造成伤害值,即血量减少对应数值;0表示房间对血量无影响。小扣初始血量为 1,且无上限。假定小扣原计划按房间编号升序访问所有房间补血/打怪,为保证血量始终为正值,小扣需对房间访问顺序进行调整,每次仅能将一个怪物房间(负数的房间)调整至访问顺序末尾。...转载 2021-04-06 21:19:48 · 169 阅读 · 0 评论 -
Leetcode 删除有序数组中的重复项 II
80. 删除有序数组中的重复项 II给你一个有序数组nums,请你原地删除重复出现的元素,使每个元素最多出现两次,返回删除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:输入:nums = [1,1,1,2,2,3]输出:5, nums = [1,1,2,2,3]示例 2:输入:nums = [0,0,1,1,1,1,2,3,3]输出:7, nums = [0,0,1,1,2,3,...原创 2021-04-06 20:54:34 · 60 阅读 · 0 评论 -
Leetcode 删除有序数组中的重复项
26. 删除有序数组中的重复项给你一个有序数组nums,请你原地删除重复出现的元素,使每个元素只出现一次,返回删除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:输入:nums = [1,1,2]输出:2, nums = [1,2]示例 2:输入:nums = [0,0,1,1,1,2,2,3,3,4]输出:5, nums = [0,1,2,3,4]/** 路过的大妈都要...原创 2021-04-06 19:42:26 · 105 阅读 · 0 评论 -
LCCUP 21 采购方案
1.采购方案题目难度Easy小力将 N 个零件的报价存于数组nums。小力预算为target,假定小力仅购买两个零件,要求购买零件的花费不超过预算,请问他有多少种采购方案。注意:答案需要以1e9 + 7 (1000000007)为底取模,如:计算初始结果为:1000000008,请返回1示例 1:输入:nums = [2,5,3,5], target = 6输出:1解释:预算内仅能购买 nums[0] 与 nums[2]。示例 2:输入:nums = [...原创 2021-04-05 18:40:21 · 127 阅读 · 0 评论 -
Leetcode 搜索二维矩阵
74. 搜索二维矩阵编写一个高效的算法来判断m x n矩阵中,是否存在一个目标值。该矩阵具有如下特性:每行中的整数从左到右按升序排列。 每行的第一个整数大于前一行的最后一个整数。示例 1:输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 3输出:true示例 2:输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target =...原创 2021-03-31 10:31:43 · 163 阅读 · 0 评论 -
剑指 Offer 06. 从尾到头打印链表
剑指 Offer 06. 从尾到头打印链表输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 1:输入:head = [1,3,2]输出:[2,3,1]/** 感觉用list也差不多,咋时间差那么多。栈直接取栈顶,list倒取。 */class Solution { public int[] reversePrint(ListNode head) { if(head==null)return new int[0];..原创 2021-03-29 21:56:14 · 62 阅读 · 0 评论 -
剑指 Offer 05. 替换空格
剑指 Offer 05. 替换空格请实现一个函数,把字符串s中的每个空格替换成"%20"。示例 1:输入:s = "We are happy."输出:"We%20are%20happy."/** 没想到这个小破题也能双指针,学到了!**/class Solution { public String replaceSpace(String s) { int len=s.length(); int left=len-1,r...原创 2021-03-29 20:50:34 · 69 阅读 · 0 评论 -
剑指 Offer 04. 二维数组中的查找
剑指 Offer 04. 二维数组中的查找在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例:现有矩阵 matrix 如下:[ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, 24], [18, 21, 2..原创 2021-03-29 20:11:18 · 93 阅读 · 0 评论 -
剑指 Offer 03. 数组中重复的数字
剑指 Offer 03. 数组中重复的数字找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 1:输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3 /** 原地置换法,时间空间最优 时间O(n),空间O(1) 题目给出的信息:0-n-1之间长度为n的数组 思路:如果不.原创 2021-03-29 19:16:13 · 54 阅读 · 0 评论 -
Leetcode 恢复二叉搜索树
99. 恢复二叉搜索树给你二叉搜索树的根节点root,该树中的两个节点被错误地交换。请在不改变其结构的情况下,恢复这棵树。进阶:使用 O(n) 空间复杂度的解法很容易实现。你能想出一个只使用常数空间的解决方案吗?示例 1:输入:root = [1,3,null,null,2]输出:[3,1,null,null,2]解释:3 不能是 1 左孩子,因为 3 > 1 。交换 1 和 3 使二叉搜索树有效。示例 2:输入:root = [3,1,4,nul...原创 2021-03-29 18:28:33 · 71 阅读 · 0 评论 -
Leetcode 颠倒二进制位
190. 颠倒二进制位颠倒给定的 32 位无符号整数的二进制位。提示:请注意,在某些语言(如 Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因为无论整数是有符号的还是无符号的,其内部的二进制表示形式都是相同的。 在 Java 中,编译器使用二进制补码记法来表示有符号整数。因此,在上面的示例 2中,输入表示有符号整数-3,输出表示有符号整数-1073741825。进阶:如果多次调用这个函数,你将如何优化你的算法?示例...原创 2021-03-29 15:02:32 · 77 阅读 · 0 评论 -
Leetcode 位1的个数
191. 位1的个数编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 '1' 的个数(也被称为汉明重量)。提示:请注意,在某些语言(如 Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因为无论整数是有符号的还是无符号的,其内部的二进制表示形式都是相同的。 在 Java 中,编译器使用二进制补码记法来表示有符号整数。因此,在上面的示例 3中,输入表示有符号整数-3。示例 1:输入:0...原创 2021-03-29 09:53:03 · 114 阅读 · 0 评论 -
Leetcode 二叉搜索树迭代器
173. 二叉搜索树迭代器实现一个二叉搜索树迭代器类BSTIterator,表示一个按中序遍历二叉搜索树(BST)的迭代器:BSTIterator(TreeNode root)初始化BSTIterator类的一个对象。BST 的根节点root会作为构造函数的一部分给出。指针应初始化为一个不存在于 BST 中的数字,且该数字小于 BST 中的任何元素。 boolean hasNext()如果向指针右侧遍历存在数字,则返回true;否则返回false。 int next()将...原创 2021-03-28 21:35:22 · 68 阅读 · 0 评论 -
Leetcode 二叉树的中序遍历
94. 二叉树的中序遍历给定一个二叉树的根节点root,返回它的中序遍历。示例 1:输入:root = [1,null,2,3]输出:[1,3,2]示例 2:输入:root = []输出:[]示例 3:输入:root = [1]输出:[1]示例 4:输入:root = [1,2]输出:[2,1]示例 5:输入:root = [1,null,2]输出:[1,2]//递归 加了个list我就有点晕乎乎了,...原创 2021-03-28 20:59:43 · 129 阅读 · 0 评论