Leetcode/剑指offer-【数组篇】
面试
魑魅魍魉114
这个作者很懒,什么都没留下…
展开
-
Leetcode1143. 最长公共子序列
dp[i][j]=max(dp[i−1][j],dp[i][j−1])dp[i][j] = max(dp[i - 1][j], dp[i][j - 1])dp[i][j]=max(dp[i−1][j],dp[i][j−1]), 当 text1[i−1]!dp[i][j]=dp[i−1][j−1]+1dp[i][j] = dp[i - 1][j - 1] + 1dp[i][j]=dp[i−1][j−1]+1, 当 text1[i−1]==text2[j−1];原创 2024-01-24 22:57:55 · 1109 阅读 · 1 评论 -
Leetcode70 爬楼梯
你有多少种不同的方法可以爬到楼顶呢?1. 1 阶 + 1 阶 + 1 阶。有两种方法可以爬到楼顶。1. 1 阶 + 1 阶。有三种方法可以爬到楼顶。2. 1 阶 + 2 阶。3. 2 阶 + 1 阶。原创 2023-11-11 22:44:10 · 362 阅读 · 0 评论 -
Leetcode300 最长递增子序列
是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。最长递增子序列是 [2,3,7,101],因此长度为 4。,找到其中最长严格递增子序列的长度。原创 2023-11-11 22:40:03 · 221 阅读 · 0 评论 -
Leetcode219. 存在重复元素 II
题解:哈希,记录最大的已经存在的下标。,判断数组中是否存在两个。原创 2023-10-04 15:09:32 · 236 阅读 · 0 评论 -
Leetcode202. 快乐数
编写一个算法来判断一个数。原创 2023-10-03 22:21:42 · 350 阅读 · 0 评论 -
Leetcode209. 长度最小的子数组
如果不存在符合条件的子数组,返回。找出该数组中满足其总和大于等于。个正整数的数组和一个正整数。原创 2023-09-27 08:22:01 · 110 阅读 · 0 评论 -
Leetcode11. 盛最多水的容器
轴共同构成的容器可以容纳最多的水。找出其中的两条线,使得它们与。返回容器可以储存的最大水量。原创 2023-09-26 08:40:49 · 155 阅读 · 0 评论 -
Leetcode238. 除自身以外数组的乘积
以nums = [1,2,3,4,5]数组为例,nums数组从0开始遍历到索引 i=3时此时ans[i=3] = nums[0]*nums[1]*nums[2],同时nums数组从尾部开始倒序j=3时,ans[j=3] = nums[4];定义乘积的前缀beforeMul和后缀afterMul,beforeMul代表从i=0开始,nums数组前面的乘积,afterMul代表从j=nums.length-1开始,nums数组后面乘积。之中任意元素的全部前缀元素和后缀的乘积都在。时间复杂度内完成此题。原创 2023-09-24 22:12:49 · 170 阅读 · 0 评论 -
Leetcode45. 跳跃游戏 II
向前跳转的最大长度。生成的测试用例可以到达。处,你可以跳转到任意。原创 2023-09-24 21:23:38 · 171 阅读 · 0 评论 -
Leetcode55. 跳跃游戏
数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标,如果可以,返回。给你一个非负整数数组。原创 2023-09-24 08:56:32 · 215 阅读 · 0 评论 -
Leetcode228. 汇总区间
的每个元素都恰好被某个区间范围所覆盖,并且不存在属于某个范围但不属于。列表中的每个区间范围。原创 2023-09-23 07:00:18 · 247 阅读 · 0 评论 -
Leetcode198. 打家劫舍
你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,给定一个代表每个房屋存放金额的非负整数数组,计算你。,一夜之内能够偷窃到的最高金额。原创 2023-09-22 21:52:47 · 227 阅读 · 0 评论 -
Leetcode191. 位1的个数
编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 '1' 的个数(也被称为。原创 2023-09-22 13:32:23 · 247 阅读 · 0 评论 -
Leetcode162. 寻找峰值
找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回。峰值元素是指其值严格大于左右相邻值的元素。你必须实现时间复杂度为。的算法来解决此问题。原创 2023-09-16 09:33:37 · 171 阅读 · 0 评论 -
Leetcode154. 寻找旋转排序数组中的最小值(存在重复元素)
它原来是一个升序排列的数组,并按上述情形进行了多次旋转。请你找出并返回数组中的。你必须尽可能减少整个过程的操作步骤。的数组,预先按照升序排列,经由。原创 2023-09-14 10:36:26 · 267 阅读 · 0 评论 -
Leetcode153. 寻找旋转排序数组中的最小值(无重复元素)
二分查找:为什么左右不对称?,它原来是一个升序排列的数组,并按上述情形进行了多次旋转。请你找出并返回数组中的。的数组,预先按照升序排列,经由。你必须设计一个时间复杂度为。原创 2023-09-13 10:47:54 · 133 阅读 · 0 评论 -
Leetcode152. 连续子数组的最大乘积
请你找出数组中乘积最大的非空连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。测试用例的答案是一个。是数组的连续子序列。原创 2023-09-13 10:15:53 · 365 阅读 · 0 评论 -
Leetcode150. 逆波兰表达式求值
返回一个表示表达式值的整数。原创 2023-09-12 10:06:17 · 145 阅读 · 0 评论 -
Leetcode137. 某一个数字出现一次,其余数字出现3次
你必须设计并实现线性时间复杂度的算法且使用常数级空间来解决此问题。请你找出并返回那个只出现了一次的元素。外,其余每个元素都恰出现。原创 2023-09-09 18:21:27 · 306 阅读 · 0 评论 -
Leetcode128. 最长连续序列
找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。请你设计并实现时间复杂度为。给定一个未排序的整数数组。原创 2023-09-06 12:27:47 · 398 阅读 · 0 评论 -
90. 子集 II
本题也可以不使用used数组来去重,因为递归的时候下一个startIndex是i+1而不是0。如果要是全排列的话,每次要从0开始遍历,为了跳过已入栈的元素,需要使用used。,其中可能包含重复元素,请你返回该数组所有可能的子集(幂集)。返回的解集中,子集可以按。原创 2023-08-26 11:11:42 · 173 阅读 · 0 评论 -
Leetcode81. 搜索旋转排序数组 II
请你编写一个函数来判断给定的目标值是否存在于数组中。已知存在一个按非降序排列的整数数组。你必须尽可能减少整个操作步骤。,数组中的值不必互不相同。在预先未知的某个下标。原创 2023-08-26 10:38:27 · 398 阅读 · 0 评论 -
Leetcode80. 删除有序数组中的重复项 II
删除重复出现的元素,使得出现次数超过两次的元素。并在使用 O(1) 额外空间的条件下完成。不要使用额外的数组空间,你必须在。,返回删除后数组的新长度。原创 2023-08-26 10:12:47 · 408 阅读 · 0 评论 -
Leetcode77. 组合
【代码】Leetcode77. 组合。原创 2023-08-26 09:10:36 · 390 阅读 · 0 评论 -
Leetcode.75 颜色分类
首先,所有数都≤2,那么索性把所有数组置为2,然后遇到所有≤1的,就再全部置为1,,覆盖了错误的2,这时候所有2的位置已经正确,最后所有≤0的全部置为0,也就覆盖了一些错误的1,这时候,0和1的位置都正确。遇到0的情况,先变为1,再变为0,所以现在后面变为1,在前面覆盖0,不会出现0覆盖1的问题。对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。必须在不使用库内置的 sort 函数的情况下解决这个问题。给定一个包含红色、白色和蓝色、共。分别表示红色、白色和蓝色。原创 2023-08-24 11:37:37 · 168 阅读 · 0 评论 -
Leetcode74. 搜索二维矩阵
给你一个满足下述两条属性的。原创 2023-08-22 10:46:55 · 340 阅读 · 0 评论 -
Leetcode.73矩阵置零
则将其所在行和列的所有元素都设为。的矩阵,如果一个元素为。原创 2023-08-22 10:37:36 · 1071 阅读 · 0 评论 -
Leetcode40 组合之和2
输出 => [[1, 1, 6], [1, 2, 5], [1, 7], [2, 6]]递归之前 => [1, 1, 2],剩余 = 4。递归之前 => [1, 1, 5],剩余 = 1。递归之前 => [1, 1, 6],剩余 = 0。递归之前 => [1, 2, 5],剩余 = 0。递归之前 => [1, 1],剩余 = 6。递归之后 => [1, 1],剩余 = 4。递归之后 => [1, 1],剩余 = 1。递归之后 => [1, 1],剩余 = 0。递归之前 => [1, 6],剩余 = 1。原创 2023-08-15 09:52:52 · 171 阅读 · 0 评论 -
Leetcode39 组合总和
给你一个的整数数组candidates和一个目标整数target,找出candidates中可以使数字和为目标数target的 所有,并以列表形式返回。你可以按返回这些组合。candidates中的数字可以。如果至少一个数字的被选数量不同,则两种组合是不同的。对于给定的输入,保证和为target的不同组合数少于150个。解析:思路分析:根据示例 1:输入: candidates = [2, 3, 6, 7],target = 7。原创 2023-08-14 14:54:39 · 119 阅读 · 0 评论 -
Leetcode35 搜索插入位置
第四轮:nums[mid] > target (3>2) ,left = 1,right = 0,此时right > left,退出循环,第三轮:nums[mid] < target (1 target(3>2),left = 0, right = 2,mid = 1。第二轮:nums[mid] > target(3>2),left = 0,right = 1,mid = 0。请必须使用时间复杂度为。原创 2023-08-13 09:01:11 · 316 阅读 · 0 评论 -
Leetcode34 在排序数组中查找元素的第一个和最后一个位置
请你找出给定目标值在数组中的开始位置和结束位置。给你一个按照非递减顺序排列的整数数组。你必须设计并实现时间复杂度为。如果数组中不存在目标值。原创 2023-08-13 08:46:47 · 274 阅读 · 0 评论 -
Leetcode33 搜索旋转排序数组
【代码】Leetcode33 搜索旋转排序数组。原创 2023-08-12 10:58:59 · 879 阅读 · 1 评论 -
Leetcode31 下一个排列
算法过程的第二步,可以变为将[j,end]排序,然后从[j,end)和i进行比较,在区间j,end区间第一个大于nums[i]后,交换即可。原创 2023-08-06 18:11:51 · 582 阅读 · 0 评论 -
Leetcode69 x的平方根
【代码】Leetcode69 x的平方根。原创 2023-08-02 11:33:50 · 139 阅读 · 0 评论 -
二分法查找有序数组中等于或者接近目标值的元素
定义left = 0,right = nums.length - 1;while循环中left=right会跳出循环,如果当nums[mid]>target时,更新right的方式为right = mid;如果此时left=right则 nums[left]和nums[right]都会大于target,所以此时需要比较nums[left]或者nums[left-1]哪一个更接近target。例如:nums = {1,4,6,7,9,19,23,26,34},target = 18。原创 2023-02-03 18:44:21 · 314 阅读 · 0 评论 -
Leetcode47 全排列 II
给定一个可包含重复数字的序列。返回所有不重复的全排列。原创 2023-01-25 22:38:43 · 201 阅读 · 0 评论 -
Leetcode46 全排列
在分步解决问题的过程中,当它通过尝试发现现有的分步答案不能得到有效的正确的解答的时候,它将取消上一步甚至是上几步的计算,再通过其它的可能的分步解答再次尝试寻找问题的答案。输出 => [[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1]]递归之前 => [1, 2, 3]递归之前 => [1, 3, 2]递归之前 => [2, 1, 3]递归之前 => [2, 3, 1]递归之前 => [3, 1, 2]转载 2023-01-24 15:48:01 · 72 阅读 · 0 评论 -
Leetcode739 每日温度
可以维护一个存储下标的单调栈,从栈底到栈顶的下标对应的温度列表中的温度依次递减。如果一个下标在单调栈里,则表示尚未找到下一次温度更高的下标。正向遍历温度列表。对于温度列表中的每个元素 temperatures[i],如果栈为空,则直接将 i 进栈,如果栈不为空,则比较栈顶元素 prevIndex 对应的温度 temperatures[prevIndex] 和当前温度 temperatures[i],如果 temperatures[i] > temperatures[prevIndex],则将 prevInd原创 2022-06-15 10:50:20 · 187 阅读 · 0 评论 -
Leetcode209 长度最小的子数组
滑动窗口:定义两个指针 start 和end 分别表示子数组(滑动窗口窗口)的开始位置和结束位置,维护变量 sum 存储子数组中的元素和nums[start] 到nums[end] 的元素和。初始状态下,start 和end 都指向下标 0,sum 的值为 0。每一轮迭代,将 nums[end] 加到sum,如果sum≥s,则更新子数组的最小长度(此时子数组的长度是 end−start+1),然后将nums[start] 从sum 中减去并将start 右移,直到 sum...原创 2022-06-08 15:29:06 · 266 阅读 · 0 评论 -
Leetcode122 买卖股票的最佳时机 II
给你一个整数数组 prices ,其中prices[i] 表示某支股票第 i 天的价格。在每一天,你可以决定是否购买和/或出售股票。你在任何时候最多只能持有 一股 股票。你也可以先购买,然后在 同一天 出售。返回 你能获得的 最大 利润。输入:prices = [7,1,5,3,6,4]输出:7解释:在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5 - 1 = 4 。 随后,在第 4 天(股票价格 = ...原创 2022-05-30 16:33:53 · 124 阅读 · 0 评论