数据结构算法练习
力扣数据结构算法练习,题解,题目描述
零点零六了
这个作者很懒,什么都没留下…
展开
-
[数组] 子数组最大平均数
[数组] 子数组最大平均数原创 2024-06-07 00:17:19 · 210 阅读 · 0 评论 -
[JAVA数组] 三个数的最大乘积
[JAVA数组] 三个数的最大乘积原创 2024-06-03 22:51:36 · 228 阅读 · 0 评论 -
[数组] 两个列表的最小索引总和
[数组] 两个列表的最小索引总和,哈希表原创 2024-05-17 01:09:41 · 108 阅读 · 0 评论 -
力扣(数组)找到所有数组中消失的数字
具体来说,遍历 nums,每遇到一个数 xxx,就让 nums[x−1] 增加 n。由于 nums 中所有数均在 [1,n] 中,增加以后,这些数必然大于 n。由于数字范围均在 [1,n]中,我们也可以用一个长度为 nnn 的数组来代替哈希表。数字,由于数字范围均在 [1,n][1,n][1,n] 中,记录数字后我们再利用哈希表检查 [1,n][中的每一个数是否出现,从而找到缺失的数字。由于 nums的数字范围均在 [1,n]中,我们可以利用这一范围之外的数字,来表达「是否存在」的含义。原创 2024-04-02 16:33:22 · 339 阅读 · 0 评论 -
[数组]最大连续 1 的个数
遍历数组结束之后,需要再次使用当前的连续 1 的个数更新最大的连续 1的个数,因为数组的最后一个元素可能是 1,且最长连续 1 的子数组可能出现在数组的末尾,如果遍历数组结束之后不更新最大的连续 1的个数,则会导致结果错误。为了得到数组中最大连续1的个数,需要遍历数组,并记录最大的连续1的个数和当下1的个数。如果当前元素是1,则将当前的连续是1的个数加1,否则使用之前的连续 1的个数,更新最大的连续 11的个数,并将当前的连续 1的个数清零。, 计算其中最大连续。原创 2024-04-11 22:22:06 · 149 阅读 · 0 评论 -
[数组]提莫攻击
如果当前他正处于中毒状态,由于中毒状态不可叠加,我们知道上次中毒后结束时间为 expired,本次中毒后结束时间为 timeSeries[i]+duration,因此本次中毒增加的持续中毒时间为 timeSeries[i]+duration−expired;- 第 2 秒,提莫再次攻击艾希,并重置中毒计时器,艾希中毒状态需要持续 2 秒,即第 2 秒和第 3 秒。中毒状态会维持 2 秒,即第 1 秒和第 2 秒。- 第 4 秒,提莫再次攻击艾希,艾希中毒状态又持续 2 秒,即第 4 秒和第 5 秒。原创 2024-04-11 23:08:20 · 205 阅读 · 0 评论 -
【数组算法】598. 区间加法
M 中最大的整数是 2, 而且 M 中有4个值为2的元素。矩阵初始化时所有的单元格都为。矩阵中最大整数的个数。原创 2024-05-11 23:02:32 · 197 阅读 · 0 评论 -
丢失的数字
n = 3,因为有 3 个数字,所以所有的数字都在范围 [0,3] 内。2 是丢失的数字,因为它没有出现在 nums 中。n = 2,因为有 2 个数字,所以所有的数字都在范围 [0,2] 内。2 是丢失的数字,因为它没有出现在 nums 中。n = 9,因为有 9 个数字,所以所有的数字都在范围 [0,9] 内。n = 1,因为有 1 个数字,所以所有的数字都在范围 [0,1] 内。将数组排序之后,即可根据数组中每个下标处的元素是否和下标相等,得到丢失的数字。两种情况:缺的是不是最后一个数,原创 2024-03-30 19:37:00 · 145 阅读 · 0 评论 -
[数组]相对名次
给你一个长度为n的整数数组score,其中score[i]是第i位运动员在比赛中的得分。所有得分都。运动员将根据得分,其中名次第1的运动员得分最高,名次第2的运动员得分第2高,依此类推。1234nx"x"使用长度为n的数组answer返回获奖,其中answer[i]是第i位运动员的获奖情况。名次为 [1st, 2nd, 3rd, 4th, 5th]。名次为 [1st, 5th, 3rd, 2nd, 4th]。原创 2024-04-16 21:35:16 · 308 阅读 · 0 评论 -
存在重复元素
判断数组中是否存在两个。原创 2024-03-30 18:42:45 · 210 阅读 · 0 评论 -
力口数组66 加一
java数组加一原创 2024-03-26 22:51:46 · 153 阅读 · 0 评论 -
杨辉三角JAVA解法
杨辉三角,java解题法原创 2024-03-28 20:57:43 · 112 阅读 · 0 评论 -
力扣(数组)第三大数
给你一个非空数组,返回此数组中。如果不存在,则返回数组中最大的数。[3, 2, 1]1第三大的数是 1。[1, 2]2第三大的数不存在, 所以返回最大的数 2。1注意,要求返回第三大的数,是指在所有不同数字中排第三大的数。此例中存在两个值为 2 的数,它们都排第二。在所有不同数字中排第三大的数为 1。题解:方法一:排序将数组从大到小排序后,从头开始遍历数组,通过判断相邻元素是否不同,来统计不同元素的个数。如果能找到三个不同的元素,就返回第三大的元素,否则返回最大的元素。原创 2024-04-02 15:27:17 · 226 阅读 · 0 评论 -
买卖股票的最佳时机
其实是一种动态的变化,在遍历向前推进时,找到一个最小买入价格minprice,然后,在没有找到下一个更小的买入价格时,计算接下来每一天的利润,记录其中最大利润。如果找到下一个最小买入价格minprice,继续计算接下来未找到下一个更小买入价格时的利润最大值,直到遍历完prices数组,maxProfit就是历史最大差值!在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5。同时,你不能在买入前卖出股票。返回你可以从这笔交易中获取的最大利润。原创 2024-03-28 23:01:23 · 102 阅读 · 0 评论 -
最长和谐子序列
和谐数组是指一个数组里元素的最大值和最小值之间的差别1。现在,给你一个整数数组nums,请你在所有可能的子序列中找到最长的和谐子序列的长度。数组的子序列是一个由数组派生出来的序列,它可以通过删除一些元素或不删除元素、且不改变其余元素的顺序而得到。5最长的和谐子序列是 [3,2,2,2,3]20。原创 2024-04-20 20:36:57 · 303 阅读 · 0 评论 -
两个数组的交集
输出结果中的每个元素一定是。[4,9] 也是可通过的。原创 2024-04-07 21:49:20 · 187 阅读 · 0 评论 -
[数组]键盘行
我们为每一个英文字母标记其对应键盘上的行号,然后检测字符串中所有字符对应的行号是否相同。遍历字符串时,统一将大写字母转化为小写字母方便计算。同一行的字母打印出来的单词。我们可以预处理计算出每个字符对应的行号。原创 2024-04-20 20:28:22 · 146 阅读 · 0 评论 -
java汇总区间
在遍历过程中,维护下标 low和 high分别记录区间的起点和终点,对于任何区间都有 low≤high。当得到一个区间时,根据 loww 和 high的值生成区间的字符串表示。每次遇到相邻元素之间的差值大于 1 时,我们就找到了一个区间。遍历完数组之后,就能得到一系列的区间的列表。的每个元素都恰好被某个区间范围所覆盖,并且不存在属于某个范围但不属于。当 low<high时,区间的字符串表示为 ‘‘low→high"。当 low=high时,区间的字符串表示为 ‘‘low"。列表中的每个区间范围。原创 2024-03-31 16:25:31 · 326 阅读 · 0 评论 -
力扣移动零
参考快速排序,零是中间点,等于零点放在右边,不能与零的放在左边,用两个指针,i和j,只要。移动到数组的末尾,同时保持非零元素的相对顺序。,必须在不复制数组的情况下原地对数组进行操作。,编写一个函数将所有。j用来指非零,i找0;原创 2024-03-31 17:15:12 · 274 阅读 · 0 评论 -
力扣(数组)分发饼干
如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;对于每个元素 g[i],找到未被使用的最小的 j 使得 g[i]≤s[j],虽然你有两块小饼干,由于他们的尺寸都是1,你只能让胃口值是1的孩子满足。你有三个孩子和两块小饼干,3个孩子的胃口值分别是:1,2,3。你有两个孩子和三块小饼干,2个孩子的胃口值分别是1,2。假设你是一位很棒的家长,想要给你的孩子们一些小饼干。原创 2024-04-02 17:31:29 · 216 阅读 · 0 评论