![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数组
leetcode数组刷题笔记
gyjllll
这个作者很懒,什么都没留下…
展开
-
数组总结篇
704.二分查找-CSDN博客35.搜索插入位置-CSDN博客69.x的平方根-CSDN博客 34. 在排序数组中查找元素的第一个和最后一个位置(中等)-CSDN博客27.移除元素-CSDN博客26.删除有序数组中的重复项-CSDN博客283.移动零-CSDN博客844. 比较含退格的字符串-CSDN博客977. 有序数组的平方-CSDN博客209. 长度最小的子数组(中等)-CSDN博客904. 水果成篮(中等)-CSDN博客76. 最小覆盖子串(困难)-CSDN博客59.螺旋矩阵II(中等)-CSDN博原创 2023-11-26 19:55:16 · 352 阅读 · 1 评论 -
76. 最小覆盖子串(困难)
需判断窗口长度是否原创 2023-11-26 15:17:40 · 432 阅读 · 1 评论 -
54. 螺旋矩阵(中等)
回到本题,大体思路可以继续按照螺旋矩阵II的步骤进行。,返回矩阵中的所有元素。原创 2023-11-26 19:38:28 · 875 阅读 · 1 评论 -
59.螺旋矩阵II(中等)
然后有一个很重要的一点,因为4条边要写4个for循环,第一个for循环从左往右最上面开始遍历,其他三个for循环都需要记一下上一次循环索引变量的值,例如最开始第一行从左到右,i=0,j从0变到1,把两个空填上,填完后由于j当前为1,比2小,因此继续加1变成j=2,这时已经不满足for循环条件,因此进入下一个for循环。第二个for循环的时候,从上往下遍历,j=2就成为了固定不变的值,i便不断更新,依次类推进入第三个循环,第四个循环,完成一圈遍历。最后,如果n是奇数,需要单独处理一下矩形中间值。原创 2023-11-26 17:26:48 · 374 阅读 · 1 评论 -
904. 水果成篮(中等)
这里采用map键值的方式的方式,使用哈希表存储这个窗口内的数以及出现的次数,左值为具体数,右值为该数出现的次数,删除的时候找到左指针索引的指针:auto it = cnt.find(fruits[left]);while循环条件为窗口里面数据种类大于2,里面内容则为删掉左指针索引的那个数,然后左指针更新,全部删掉后才可以跳出while循环,经过while循环后,统计窗口长度,根据左右指针。输入:fruits = [3,3,3,1,2,1,1,2,3,3,4]输入:fruits = [1,2,3,2,2]原创 2023-11-26 15:09:17 · 336 阅读 · 1 评论 -
209. 长度最小的子数组(中等)
用窗口的尾指针进行for循环遍历,每次累加一下,算总和在for循环中,因为累计加和要有终止条件,因此引入一个while循环,用来判断窗口里面的和是否>=目标值,while(sum>=target),在这里面用来移动窗口,首先算一下当前窗口的长度,窗口的和把原先头指针索引的值减掉,然后将窗口的头指针进行移动,继续进行while循环判断,如果还大于目标值,则继续移动头指针,按上面方法做,如果小于,则重新进行下一次for循环,说白了for循环是为了移动窗口尾指针,while是为了移动窗口头指针。原创 2023-11-26 15:03:32 · 393 阅读 · 1 评论 -
977. 有序数组的平方
精髓在于,数组已按大小排列好,平方后的最大数一定在头或者尾,因此每次比较头指针和尾指针的平方数,哪一个大,新的平方数数组的指针(额外的尾指针)索引为这个大的平方数,这个大数的指针便进行更新(小数的指针不更新),然后额外的尾指针也进行更新。解释:平方后,数组变为 [16,1,0,9,100]输入:nums = [-4,-1,0,3,10]输入:nums = [-7,-3,2,3,11]排序后,数组变为 [0,1,9,16,100]输出:[0,1,9,16,100]输出:[4,9,9,49,121]原创 2023-11-26 14:43:49 · 395 阅读 · 1 评论 -
844. 比较含退格的字符串
注意:需要设置自己的字符串循环以及总体的字符串循环,自己的字符串循环是为了处理退格符,有一个退格符需要前移一个,同时累计退格符个数,有n个退格符,就要额外再前移n个,只有当退格符个数为0,且当前不是退格符,则跳出自己的循环,两个字符串都跳出自己的循环后,然后去比较各自当前指针索引的字符是否一样。一.双指针法:一个字符是否会被删掉,只取决于该字符后面的退格符,而与该字符前面的退格符无关。设立新字符串,然后去遍历给定字符串,是普通字符,填到新的字符串里,是退格符,将新字符串的最后一个字符移除。原创 2023-11-26 14:39:47 · 397 阅读 · 1 评论 -
283.移动零
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。慢指针更新:如果当前快指针索引的数不为0,则将慢指针与快指针索引的数据进行交换,慢指针更新。请注意 ,必须在不复制数组的情况下原地对数组进行操作。输入: nums = [0,1,0,3,12]输出: [1,3,12,0,0]快指针依旧跟着数组循环遍历更新。输入: nums = [0]双指针,两个指针均从0开始。原创 2023-11-26 14:18:06 · 356 阅读 · 1 评论 -
26.删除有序数组中的重复项
在循环比较时,快指针随着数组循环遍历一直在更新,快指针索引数要与其前一个索引数作比较,如果不相等,则将快指针索引的数赋值给慢指针,慢指针进行更新,否则慢指针不更新。解释:函数应该返回新的长度 5 , 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4。解释:函数应该返回新的长度 2 ,并且原数组 nums 的前两个元素被修改为 1, 2。输入:nums = [0,0,1,1,1,2,2,3,3,4]输出:5, nums = [0,1,2,3,4]输入:nums = [1,1,2]原创 2023-11-26 14:13:38 · 363 阅读 · 1 评论 -
27.移除元素
解释:函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。例如,函数返回的新长度为 2 ,而 nums = [2,2,3,3] 或 nums = [2,2,0,0],也会被视作正确答案。解释:函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。输入:nums = [0,1,2,2,3,0,4,2], val = 2。元素的顺序可以改变。输入:nums = [3,2,2,3], val = 3。输出:5, nums = [0,1,3,0,4]原创 2023-11-26 14:08:57 · 356 阅读 · 1 评论 -
34. 在排序数组中查找元素的第一个和最后一个位置(中等)
情况一:target 在数组范围的右边或者左边,例如数组{3, 4, 5},target为2或者数组{3, 4, 5},target为6,此时应该返回{-1, -1}情况二:target 在数组范围中,且数组中不存在target,例如数组{3,6,7},target为5,此时应该返回{-1, -1}情况三:target 在数组范围中,且数组中存在target,例如数组{3,6,7},target为6,此时应该返回{1, 1}输入:nums = [5,7,7,8,8,10], target = 8。原创 2023-11-26 14:01:22 · 379 阅读 · 1 评论 -
69.x的平方根
注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5。解释:8 的算术平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去。给你一个非负整数 x ,计算并返回 x 的 算术平方根。基本二分法,把left当成0,right当成目标值。原创 2023-11-26 13:54:41 · 338 阅读 · 1 评论 -
35.搜索插入位置
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。最基础的二分法,如有数组里有target,则返回middle,如果没有,就返回left。输入: nums = [1,3,5,6], target = 5。输入: nums = [1,3,5,6], target = 2。输入: nums = [1,3,5,6], target = 7。请必须使用时间复杂度为 O(log n) 的算法。原创 2023-11-26 13:42:59 · 358 阅读 · 1 评论 -
704.二分查找
if (nums[middle] > target) right 要赋值为 middle - 1,因为当前这个nums[middle]一定不是target,那么接下来要查找的左区间结束下标位置就是 middle - 1,如果小于的话,则更新left为middle+1。输入: nums = [-1,0,3,5,9,12], target = 9。输入: nums = [-1,0,3,5,9,12], target = 2。解释: 2 不存在 nums 中因此返回 -1。原创 2023-11-26 13:24:45 · 354 阅读 · 2 评论