自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 缺失的第一个正数

所以重复操作直到数 <1或 >n(因为这样的数不用处理)。【如果数组长度是 n ,结果一定在 1-n+1 之间的一个数,所以对于 <1 和 >n 的数不做处理】思路:遍历数组,将 1 放在 1位置(索引 0 的位置),2放在 2 位置,依次类推,因为会。处理结束,遍历数组,对应位置不是这个数,就证明没有出现过,返回即可。,请你找出其中没有出现的最小的正整数。并且只使用常数级别额外空间的解决方案。范围 [1,2] 中的数字都在数组中。1 在数组中,但 2 没有。最小的正数 1 没有出现。

2024-11-01 10:47:38 831

原创 除自身以外数组的乘积——动态规划

思路:结果数组的第 i 个元素 =(前 i-1 个数的乘积)*( i +1到最后一个数的乘积),分别数前缀积和后缀积,可以用两个数组 preMuti 和 suffMuti 来记录。之中任意元素的全部前缀元素和后缀的乘积都在。【这两个数组一次遍历即可得到】之外其余各元素的乘积。时间复杂度内完成此题。

2024-10-31 11:19:52 168

原创 轮转数组——求最大公约数

但是会出现一个问题,我们需要对 n 个元素依次复制粘贴 n 次【每个元素一次】,但可能会出现 n/2 的元素依次复制粘贴 2 次这样的情况,本质原因是: n(即nums.length) 和 k 值。解决方案:分 epoch 轮去复制,每轮进行 n/k 次的复制粘贴。【epoch是 n 和 k的。向右轮转 1 步: [99,-1,-100,3]向右轮转 2 步: [3,99,-1,-100],将数组中的元素向右轮转。思路:依次往下复制以。

2024-10-31 10:36:35 569

原创 合并区间——List<int[]>转二维数组int[][]

思路:首先对二维数组排序(这样合并时只需要关注右边数的大小)。依次往后遍历,每一次找合并后的左右边界【注意右边界未必是i+1的右边界,区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。区间 [1,4] 和 [4,5] 可被视为重叠区间。表示若干个区间的集合,其中单个区间为。( i 的右边界,i+1的右边界)】。请你合并所有重叠的区间,并返回。

2024-10-30 17:00:07 689

原创 最大子数组和——前缀和

思路:【左边界,右边界】的和等于【0,右边界】-【0,左边界】的和。当右边界固定时,【0,左边界】越小,区间的连续和越大。建一个小顶堆方便找到最小的【0,左边界】,循环遍历即可得到答案。,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。连续子数组 [4,-1,2,1] 的和最大,为 6。(不然会少考虑左边界为0的情况)是数组中的一个连续部分。

2024-10-26 11:13:43 284

原创 最小覆盖子串——滑动窗口

本质是最小滑动窗口,窗口需满足包括所有 t 中所有字母,可以用now来指示,now是窗口中已经包含 t 中字母的个数,now==t.length()则窗口已经满足条件。【now的变化需根据窗口内已有字母裁定,窗口扩大时,该字母个数少于需要的个数,则+1;窗口减小时,该字母个数少于需要个数,则-1。最小覆盖子串 "BANC" 包含来自字符串 t 的 'A'、'B' 和 'C'。t 中两个字符 'a' 均应包含在 s 的子串中,因此没有符合条件的子字符串,返回空字符串。所有字符的子串,则返回空字符串。

2024-10-24 15:42:58 341

原创 滑动窗口最大值——存数组的优先队列

第一个元素是nums中的数,第二个数是其在nums中的索引。>=k-1之后,正式开始生成答案。注意取的时候是peek(),只查看不出队,真正出队poll()的时候是其索引不满足时才出队【因为此时窗口内已经没有这个数了才出队】的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的。滑动窗口的位置 最大值。滑动窗口每次只向右移动一位。,其中存长度为2的int。

2024-10-24 11:55:20 199

转载 和为K的子数组——前缀和

思路:大前缀和-小前缀和=某个区间的和,注意需要提前加入一个<0,1>,否则会漏 前缀和本身。子数组是数组中元素的连续非空序列。

2024-10-23 20:25:36 43

原创 找到字符串中所有字母异位词——滑动窗口

当所有字母的次数都为0时,序列满足要求,出现时的特征是滑动窗口长度等于p.length(),起始序号加入res数组。起始索引等于 0 的子串是 "cba", 它是 "abc" 的异位词。起始索引等于 6 的子串是 "bac", 它是 "abc" 的异位词。起始索引等于 0 的子串是 "ab", 它是 "ab" 的异位词。起始索引等于 1 的子串是 "ba", 它是 "ab" 的异位词。起始索引等于 2 的子串是 "ab", 它是 "ab" 的异位词。的子串,返回这些子串的起始索引。【简称“统一起跑线”】

2024-10-23 19:37:07 246

原创 接雨水——单调栈

栈中的元素从底到顶是递增的。即,栈顶的元素是当前栈中的最小值),当新元素小于等于栈顶直接入栈;大于则出现凹槽(新元素是右边界,左边界是栈内第二个元素),计算雨水量(可以看成栈顶这个点“顶着的”雨水,非常奇妙)累加即可。上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。个非负整数表示每个宽度为。

2024-10-22 19:37:07 360

原创 三数之和——双指针+去重

target,其实是可以不去重的,因为本身这个组合就不会放入res中;会放入res相同答案的时候,一定是second和third都一样了,此时其实只需要使其中一个不同即可(打破平衡之后,后面自动就略过了)①第一个数去重,非常简单,一样continue。答案中不可以包含重复的三元组。,判断是否存在三元组。

2024-10-22 15:09:18 223

原创 最长连续序列

思路:找每个连续序列的始端(找不到num-1的就是始端),然后往后数即可。,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。最长数字连续序列是 [1, 2, 3, 4]。请你设计并实现时间复杂度为。给定一个未排序的整数数组。

2024-10-21 19:37:43 250 1

原创 字母异位词分组——String排序

思路:哈希表,给每个String排序,java排序需要先拆分成char数组,Arrays.sort(char数组)后,重新用这个数组new一个String。是由重新排列源单词的所有字母得到的一个新单词。可以按任意顺序返回结果列表。给你一个字符串数组,请你将。

2024-10-21 19:29:30 165

原创 两数之和——哈希表

思路:使用哈希表,每次找不到 target-nums[i] 就将 nums[i] 放入哈希表,找到就直接返回答案。你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。整数,并返回它们的数组下标。题目:给定一个整数数组。,请你在该数组中找出。

2024-10-21 19:20:25 190

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除