自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 代码随想录算法训练营第四十三天|1049. 最后一块石头的重量 II 、 494. 目标和 、474.一和零

通过这道题目,大家先粗略了解, 01背包,完全背包,多重背包的区别,不过不用细扣,因为后面 对于 完全背包,多重背包 还有单独讲解。动态规划之背包问题,装满这个背包最多用多少个物品?| LeetCode:474.一和零_哔哩哔哩_bilibili。大家重点理解 递推公式:dp[j] += dp[j - nums[i]],这个公式后面的提问 我们还会用到。1049. 最后一块石头的重量 II。很像了,可以尝试先自己思考做一做。416. 分割等和子集。

2023-08-25 11:09:27 141

原创 代码随想录算法训练营第四十二天| 01背包问题 二维 、01背包问题 一维 、 416. 分割等和子集

对子集合的一半进行背包,如果集合一半能装满,就可以分割。416. 分割等和子集。本题是 01背包的应用类题目。

2023-08-25 11:05:24 142

原创 代码随想录算法训练营第四十一天| 343. 整数拆分 、 96.不同的二叉搜索树

96.不同的二叉搜索树。Catalan 数的模板,初始化dp[0]=1。

2023-08-25 11:00:57 130

原创 代码随想录算法训练营第三十九天|62.不同路径 、 63. 不同路径 II

本题大家掌握动态规划的方法就可以。数论方法 有点非主流,很难想到。机器人走到某一个坐标,肯定是从他的上方或左方过来的,所以递推公式是。初始化dp[1][1]=1。63. 不同路径 II。

2023-08-25 10:57:54 106

原创 代码随想录算法训练营第三十八天|理论基础、 509. 斐波那契数、 70. 爬楼梯、 746. 使用最小花费爬楼梯

这道题目力扣改了题目描述了,现在的题目描述清晰很多,相当于明确说 第一步是不用花费的。爬n及楼梯的方法是爬一步爬上楼梯或爬两步爬上楼梯,就是dp[n-1]+dp[n-2]。如果没做过动态规划的题目,看我讲的理论基础,会有感觉 是不是简单题想复杂了?其实并没有,我讲的理论基础内容,在动规章节所有题目都有运用,所以很重要!很简单的动规入门题,但简单题使用来掌握方法论的,还是要有动规五部曲来分析。如果做过动态规划题目的录友,看我的理论基础 就会感同身受了。递推公式是dp[i]=dp[i-1]+dp[i-2]。

2023-08-25 10:53:14 62

原创 代码随想录算法训练营第三十七天| 738.单调递增的数字 、968.监控二叉树 (可以跳过)、总结

从后向前遍历,如果此位数小于前一位数,就将前一位数减一,将i以后的数字全部替换为9即可。可以看看贪心算法的总结,贪心本来就没啥规律,能写出个总结篇真的不容易了。本题是贪心和二叉树的一个结合,比较难,一刷大家就跳过吧。968.监控二叉树 (可以跳过)738.单调递增的数字。

2023-08-25 10:47:24 48

原创 代码随想录算法训练营第三十六天|435. 无重叠区间、763.划分字母区间 、56. 合并区间

记录每个字母的最远距离,遍历一遍字符串,如果当前i大于等于当前前面左右字母的最远距离就截取一段字母,最后返回数组即可。763.划分字母区间。本题相对来说就比较难了。435. 无重叠区间。

2023-08-25 10:41:57 91

原创 代码随想录算法训练营第三十五天| 860.柠檬水找零、 406.根据身高重建队列 、 452. 用最少数量的箭引爆气球

如果碰到五元的钱就将五元纸币的数量加1,如果碰到十元纸币就将五元数减一,再将十元数加1,如果碰到二十元先判断是否有十元纸币,如有在十元纸币则十元五元各减一张,否则就减三张五元纸币。如果纸币不够就返回false。本题是一道 重叠区间的题目,好好做一做,因为明天三道题目,都是 重叠区间。本题有点难度,和分发糖果类似,不要两头兼顾,处理好一边再处理另一边。本题看上好像挺难,其实挺简单的,大家先尝试自己做一做。452. 用最少数量的箭引爆气球。406.根据身高重建队列。

2023-08-25 10:36:16 71

原创 代码随想录算法训练营第三十四天|1005.K次取反后最大化的数组和、134. 加油站、 135. 分发糖果

本题涉及到一个思想,就是想处理好一边再处理另一边,不要两边想着一起兼顾,后面还会有题目用到这个思路。将数组排序,把小于零的数能取反就取反,如果还有次数就寻找绝对值最小的数取反即可。本题简单一些,估计大家不用想着贪心 ,用自己直觉也会有思路。本题有点难度,不太好想,推荐大家熟悉一下方法二。1005.K次取反后最大化的数组和。

2023-08-25 10:28:35 62

原创 代码随想录算法训练营第三十二天| 122.买卖股票的最佳时机II 、55. 跳跃游戏 、45.跳跃游戏II

因为在第一天买入,第三天卖出相当于在第一天买入第二天买出,再在第二天卖出,第三天买入,英雌只需要手机每天的正利润即可。本题同样不容易想出来。贪心就是这样,有的时候 会感觉简单到离谱,有时候,难的不行,主要是不容易想到。本题如果没接触过,很难想到,所以不要自己憋时间太久,读题思考一会,没思路立刻看题解。本题解法很巧妙,大家可以看题思考一下,在看题解。122.买卖股票的最佳时机II。只需看覆盖范围是否包括重点即可。

2023-08-25 10:25:08 40

原创 代码随想录算法训练营第三十一天|理论基础、455.分发饼干、 376. 摆动序列 、53. 最大子序和

每次记录一个sum,每次将他更新为max(0,sum)+nums[i],然后安排一个ans取最大值即可。基本贪心的题目 有两个极端,要不就是特简单,要不就是死活想不出来。,所以大家了解贪心算法 就了解它没有规律的本质就够了。学完贪心之后再去看动态规划,就会了解贪心和动规的区别。不用花心思去研究其规律, 没有思路就立刻看题解。没什么难的地方,唯一要注意的是两个数组都要排序。贪心算法其实就是没有什么规律可言。

2023-08-11 11:55:15 72

原创 代码随想录算法训练营第三十天| 332.重新安排行程、51. N皇后 、37. 解数独

因为 一刷 也不求大家能把这么难的问题解决,所以 大家一刷的时候,就了解一下题目的要求,了解一下解题思路,不求能直接写出代码,先大概熟悉一下这些题,二刷的时候,随着对回溯算法的深入理解,再去解决如下三题。每次递归时填一个方格,如果已有数字则跳过,否则遍历1至9,挨个判断是否可以填。今天这三道题都非常难,那么这么难的题,为啥一天做三道?大家今天的任务,其实是 对回溯算法章节做一个总结就行。332.重新安排行程(可跳过)51. N皇后(可跳过)37. 解数独(可跳过)

2023-08-11 11:48:34 38

原创 代码随想录算法训练营第二十九天|491.递增子序列、46.全排列、47.全排列 II

本题 就是我们讲过的 40.组合总和II 去重逻辑 和 46.全排列 的结合,可以先自己做一下,然后重点看一下 文章中 我讲的拓展内容。used[i - 1] == true 也行,used[i - 1] == false 也行。本题重点感受一下,排列问题 与 组合问题,组合总和,子集问题的区别。为什么排列问题不用 startIndex。本题和大家刚做过的 90.子集II 非常像,但又很不一样,很容易掉坑里。本题与全排列相似,每次遍历时只需判断这个数是不是当前递归中第一次取即可。

2023-08-09 11:36:17 57

原创 代码随想录算法训练营第二十八天|93.复原IP地址、 78.子集 、 90.子集II

大家之前做了 40.组合总和II 和 78.子集 ,本题就是这两道题目的结合,建议自己独立做一做,本题涉及的知识,之前都讲过,没有新内容。子集问题,就是收集树形结构中,每一个节点的结果。整体代码其实和 回溯模板都是差不多的。本来是很有难度的,不过 大家做完 分割回文串 之后,本题就容易很多了。跟78题差不多,就是每次要判断自己中是否有重复元素即可。与组合类似,就是每次开始前都存一下答案的区别。

2023-08-09 11:32:46 62

原创 代码随想录算法训练营第二十七天| 39. 组合总和、40.组合总和II、 131.分割回文串

注意题目中给我们 集合是有重复元素的,那么求出来的 组合有可能重复,但题目要求不能有重复组合。每次判断上一次是否切完,如是就存入结果,然后遍历切割位置,每次切割是判断切割下来的是否回文即可。本题是 集合里元素可以用无数次,那么和组合问题的差别 其实仅在于 startIndex上的控制。本题较难,大家先看视频来理解 分割问题,明天还会有一道分割问题,先打打基础。本题开始涉及到一个问题了:去重。

2023-08-09 11:28:12 55

原创 代码随想录算法训练营第二十五天|216.组合总和III 、17.电话号码的字母组合

定义v数组,每次递归从上一个元素加1开始扫,一直扫到9,如果是k个元素则判断是否和等于n,如是就放进result数组里。定义一个mp数组,用来存储二至九所对应的字母,然后递归,每次只需搜索每个字符对应的单词即可。本题大家刚开始做会有点难度,先自己思考20min,没思路就直接看题解。如果把 组合问题理解了,本题就容易一些了。17.电话号码的字母组合。

2023-08-05 13:37:10 76

原创 代码随想录算法训练营第二十四天|理论基础、 77. 组合

其实在讲解二叉树的时候,就给大家介绍过回溯,这次正式开启回溯算法,大家可以先看视频,对回溯算法有一个整体的了解。递归参数里放一个答案数组,每次开始时判断是否已放了k个元素,如是就结束,否则就从上一个元素+1开始遍历并回溯。对着 在 回溯算法理论基础 给出的 代码模板,来做本题组合问题,大家就会发现 写回溯算法套路。在回溯算法解决实际问题的过程中,大家会有各种疑问,先看视频介绍,基本可以解决大家的疑惑。本题关于剪枝操作是大家要理解的重点,因为后面很多回溯算法解决的题目,都是这个剪枝套路。

2023-08-04 10:49:15 65

原创 代码随想录算法训练营第二十三天|669. 修剪二叉搜索树 、108.将有序数组转换为二叉搜索树 、 538.把二叉搜索树转换为累加树

每次递归判断如果是NULL就返回NULL,否则如果当前值小于low,就遍历右子树,如果当前值大于high,就遍历左子树,否则就都遍历再返回。本题也不难,在 求二叉搜索树的最小绝对差 和 众数 那两道题目 都讲过了 双指针法,思路是一样的。这道题目比较难,比 添加增加和删除节点难的多,建议先看视频理解。好了,二叉树大家就这样刷完了,做一个总结吧。108.将有序数组转换为二叉搜索树。本题就简单一些,可以尝试先自己做做。538.把二叉搜索树转换为累加树。669. 修剪二叉搜索树。

2023-08-04 10:49:10 24 1

原创 代码随想录算法训练营第二十二天|235. 二叉搜索树的最近公共祖先 、701.二叉搜索树中的插入操作 、450.删除二叉搜索树中的节点

本题比想象中的简单,大家可以先自己想一想应该怎么做,然后看视频讲解,就发现 本题为什么比较简单了。相对于 二叉树的最近公共祖先 本题就简单一些了,因为 可以利用二叉搜索树的特性。递归开始前先判断,如果在区间[p,q]内就返回当前节点,如果不是就递归左右子树。相对于 插入操作,本题就有难度了,涉及到改树的结构。235. 二叉搜索树的最近公共祖先。701.二叉搜索树中的插入操作。450.删除二叉搜索树中的节点。

2023-08-04 10:49:06 26 1

原创 代码随想录算法训练营第二十一天|530.二叉搜索树的最小绝对差 、501.二叉搜索树中的众数 、236. 二叉树的最近公共祖先

递归,如果当前节点为p或q或是空就返回,否则判断如果左子树是否与右子树返回均不为NULL,那返回当前节点,如果左子树为NULL,那就返回右子树,反之返回左子树。和 530差不多双指针思路,不过 这里涉及到一个很巧妙的代码技巧。需要领悟一下二叉树遍历上双指针操作,优先掌握递归。本题其实是比较难的,可以先看我的视频讲解。可以先自己做做看,然后看我的视频讲解。中序遍历,然后去相邻数的最小差即可。中序遍历,然后对数组进行映射即可。530.二叉搜索树的最小绝对差。501.二叉搜索树中的众数。

2023-08-01 18:32:38 53 1

原创 代码随想录算法训练营第十九天|654.最大二叉树 、617.合并二叉树 、 700.二叉搜索树中的搜索 、98.验证二叉搜索树

前序遍历,对于每个节点判断如果两节点都不为空,就把root2的数据加在root1上,否则如果root2为空,就返回root1,再如果root1为空,就将root2和root1交换。又是构造二叉树,昨天大家刚刚做完 中序后序确定二叉树,今天做这个 应该会容易一些, 先看视频,好好体会一下 为什么构造二叉树都是 前序遍历。这次是一起操作两个二叉树了, 估计大家也没一起操作过两个二叉树,也不知道该如何一起操作,可以看视频先理解一下。但本题是有陷阱的,可以自己先做一做,然后在看题解,看看自己是不是掉陷阱里了。

2023-08-01 18:22:38 38 1

原创 代码随想录算法训练营第十八天|513.找树左下角的值、112. 路径总和、113.路径总和ii、106.从中序与后序遍历序列构造二叉树、105.从前序与中序遍历序列构造二叉树

用递归,参数中有中序遍历与后序遍历、中序、后续的开头结尾,父亲节点与表示需要创建左或右节点的标识符。每次递归先将节点建起来,然后把节点赋值为后序遍历中最后的元素,再把父亲节点的左/右孩子赋值,判断如果开头等于结尾直接return,反之则在中序遍历中找最后那个节点,如找到了就继续递归。106.从中序与后序遍历序列构造二叉树,105.从前序与中序遍历序列构造二叉树 一起做,思路一样的。本题 又一次设计要回溯的过程,而且回溯的过程隐藏的还挺深,建议先看视频来理解。从中序与后序遍历序列构造二叉树。

2023-07-29 13:12:54 23

原创 代码随想录算法训练营第十七天|110.平衡二叉树、257. 二叉树的所有路径 、404.左叶子之和

用递归写,在递归函数中写一个字符串,每次递归先把当前结点的值扩充到字符串中,然后判断当前节点是否为叶子节点,如是则把路径放到数组中,不是则加上箭头,继续递归左右节点。这是大家第一次接触到回溯的过程, 我在视频里重点讲解了 本题为什么要有回溯,已经。其实本题有点文字游戏,搞清楚什么是左叶子,剩下的就是二叉树的基本操作。再一次涉及到,什么是高度,什么是深度,可以巩固一下。如果对回溯 似懂非懂,没关系, 可以先有个印象。题目链接/文章讲解/视频讲解。题目链接/文章讲解/视频讲解。

2023-07-29 13:03:25 50

原创 代码随想录算法训练营第十六天|104.二叉树的最大深度、59.n叉树的最大深度、111.二叉树的最小深度、222.完全二叉树的节点个数

大家 要先看视频讲解,就知道以上我说的内容了,很多录友刷过这道题,但理解的还不够。什么是深度,什么是高度,如何求深度,如何求高度,这里有关系到二叉树的遍历方式。用层序遍历再好不过,遍历到叶子节点直接返回,还能完美避开递归的坑。先看视频讲解,和最大深度 看似差不多,其实 差距还挺大,有坑。需要了解,普通二叉树 怎么求,完全二叉树又怎么求。104.二叉树的最大深度 (优先掌握递归)222.完全二叉树的节点个数(优先掌握递归)111.二叉树的最小深度 (优先掌握递归)

2023-07-29 12:56:31 14

原创 代码随想录算法训练营第十五天|层序遍历 、226.翻转二叉树、101. 对称二叉树

还是用递归写,遇到空树就返回true,先判断结构是否对称,然后判断左值与右值是否相等,如都相等则返回内侧与上外侧的结果。这道题目 一些做过的同学 理解的也不够深入,建议大家先看我的视频讲解,无论做过没做过,都会有很大收获。看完本篇可以一口气刷十道题,试一试, 层序遍历并不难,大家可以很快刷了十道题。用递归写,遇到空树就返回,先将左右子树反转一遍,然后依次遍历即可。101. 对称二叉树 (优先掌握递归)226.翻转二叉树 (优先掌握递归)先看视频讲解,会更容易一些。

2023-07-29 12:52:32 49

原创 代码随想录算法训练营第十四天| 二叉树的遍历

中序则不太一样,中序的左右要分开,先建立一个指针cur,让他等于根节点,每次判断cur是否为空,如不为空则将指针指向自己的左孩子并将自己入栈,如为空则取出栈顶,将值放入到答案中,并让指针指向自己的右孩子。前序遍历与后序遍历代码差不多,前序要注意是先把右边入栈,后序与前序颠倒过来,是左边先入,最后反转答案即可。需要了解 二叉树的种类,存储方式,遍历方式 以及二叉树的定义。这是统一迭代法的写法, 如果学有余力,可以掌握一下。迭代遍历 (基础不好的录友,迭代法可以放过)递归遍历 (必须掌握)

2023-07-29 12:42:21 104

原创 代码随想录算法训练营第十三天|239. 滑动窗口最大值、 347.前 K 个高频元素

写一个双端队列,每遍历到一个元素时判断它是否小于队尾,如小于则加入队尾,否则就一直出队,直到它小于队尾为止。最后查询和删除数据即可。建立一个类型为pair型的小根堆,一个存储数据,一个存储频率。每次加入堆,如堆的大小大于k就出队。之后把队中所有的元素返回即可。本题算比较有难度的,需要自己去构造单调队列,建议先看视频来理解。本题是 大数据中取前k值 的经典思路,了解想法之后,不算难。大/小顶堆的应用, 在C++中就是优先级队列。之前讲的都是栈的应用,这次该是队列的应用了。

2023-07-29 12:31:16 39

原创 代码随想录算法训练营第十一天|20. 有效的括号 、1047. 删除字符串中的所有相邻重复项、150. 逆波兰表达式求值

定义一个栈,将字符串的每一个元素都进栈出栈,如果此字符是左括号,就将此字符进栈,反之判断栈顶元素是否与他匹配,如果匹配则将栈顶元素出栈,如不匹配直接return false。把每个字符串判断它是否为数字,如是就它将转成整数后入栈,如不是就把栈顶的两个元素取出,做一次运算后再入栈,最后返回栈顶即可。要知道栈为什么适合做这种类似于爱消除的操作,因为栈帮助我们记录了 遍历数组当前元素时候,前一个元素是什么。讲完了栈实现队列,队列实现栈,接下来就是栈的经典应用了。150. 逆波兰表达式求值。

2023-07-29 12:16:43 10

原创 代码随想录算法训练营第十天|232.用栈实 现队列、 225. 用队列实现栈

而出队麻烦一点,如出队栈为空的话,需要把入队栈的所有元素全部放入出队栈中。大家惯性思维,以为还要两个队列来模拟栈,其实只用一个队列就可以模拟栈了。大家可以先看视频,了解一下模拟的过程,然后写代码会轻松很多。建议大家掌握一个队列的方法,更简单一些,可以先看视频讲解。删除则需要把最后一个元素变成第一个元素即可。入队还是只需加入即可,查询直接返回队尾。判空只需把入队和出队栈全部判一遍即可。不同于上一题,此次只需用一个队列即可。用两个栈模拟,一个入队,一个出队。,文中是以C++为例讲解的。225. 用队列实现栈。

2023-07-21 17:31:53 23 1

原创 代码随想录算法训练营第九天|28. 实现 strStr()、459.重复的子字符串

因为大家 算法能力还没到,细扣 很难的算法,会把自己绕进去,就算别人给解释,只会激发出更多的问题和疑惑。所以大家先了解大体过程,知道这么回事, 等自己有 算法基础和思维了,在看多看几遍视频,慢慢就理解了。因为KMP算法很难,大家别奢求 一次就把kmp全理解了,大家刚学KMP一定会有各种各样的疑问,先留着,别期望立刻啃明白,第一遍了解大概思路,二刷的时候,再看KMP会 好懂很多。KMP和本题,一刷的时候 ,可以适当放过,了解怎么回事就行,二刷的时候再来硬啃。题目链接/文章讲解/视频讲解。

2023-07-20 15:25:32 30

原创 代码随想录算法训练营第八天| 344.反转字符串、541.反转字符串II、剑指Offer 05.替换空格、151.翻转字符串里的单词、剑指Offer58-II.左旋转字符串

把字符串的长度更改为替换所需长度,定义快指针为新长度,慢指针为旧长度,依次往左移,如果慢指针对应的字符是空格,则将快指针及它前两个字符替换成“%20”,否则快指针对应的位置就变成慢指针对应的值。建议: 本题是字符串基础题目,就是考察 reverse 函数的实现,同时也明确一下 平时刷题什么时候用 库函数,什么时候 不用库函数。建议:这道题目基本把 刚刚做过的字符串操作 都覆盖了,不过就算知道解题思路,本题代码并不容易写,要多练一练。先反转字符串,然后依次把每个单词反转,注意去除空格即可。

2023-07-19 15:51:27 13

原创 代码随想录算法训练营第七天| 454.四数相加II 、 383. 赎金信 、 15. 三数之和 、 18. 四数之和

本题 思路整体和 三数之和一样的,都是双指针,但写的时候 有很多小细节,需要注意,建议先看视频。建议:本题是 使用map 巧妙解决的问题,好好体会一下 哈希法 如何提高程序执行效率,降低时间复杂度,当然使用哈希法 会提高空间复杂度,但一般来说我们都是舍空间 换时间, 工业开发也是这样。建议:本题虽然和 两数之和 很像,也能用哈希法,但用哈希法会很麻烦,双指针法才是正解,可以先看视频理解一下 双指针法的思路,文章中讲解的,没问题 哈希法很麻烦。用map来做哈希,先把前两个数确定,然后对后两个数搜索答案。

2023-07-18 16:06:41 15 1

原创 代码随想录算法训练营第六天| 242.有效的字母异位词、 349. 两个数组的交集 、 202. 快乐数、1. 两数之和

建议:本题就开始考虑 什么时候用set 什么时候用数组,本题其实是使用set的好题,但是后来力扣改了题目描述和 测试用例,添加了 0 <= nums1[i], nums2[i] <= 1000 条件,所以使用数组也可以了,不过建议大家忽略这个条件。先把一个数组转换成unordered_set,然后暴力枚举第二个数组,将答案存入另一个unordered_set中,最后强转成vector返回。建议:本题虽然是 力扣第一题,但是还是挺难的,也是 代码随想录中 数组,set之后,使用map解决哈希问题的第一题。

2023-07-17 14:39:14 126 1

原创 代码随想录算法训练营第四天| 24.两两交换链表中的节点、19.删除链表的倒数第N个节点 、面试题 02.07. 链表相交 、 142.环形链表II

双指针的操作,要注意,删除第N个节点,那么我们当前遍历的指针一定要指向 第N个节点的前一个节点,建议先看视频。本题链表操作就比较复杂了,建议大家先看视频,视频里我讲解了注意事项,为什么需要temp保存临时节点。算是链表比较有难度的题目,需要多花点时间理解 确定环和找环入口,建议先看视频。先遍历一遍得到总共的节点数,然后求出倒数第N个节点所在的位置,最后删除。同样是找出节点数,然后移动头节点来保证两链表长度一样,最后一起向上跳。本题没有视频讲解,大家注意 数值相同,不代表指针相同。142.环形链表II。

2023-07-16 16:34:44 40 1

原创 代码随想录算法训练营第三天| 203. 移除链表元素、707.设计链表、206反转链表。

还是用递归来写,先定义一个指针来表示当前节点的下一个节点,然后把当前节点的指针置空,最后定义指针f为更改后的下一个节点(以后要用),再将更改后的nex的下一个指向当前节点,最后返回更改完的链表头(即f)。然后用递归来写,每次枚举节点是否需要删除,如需要则做删除操作,如不需要就指向下一个节点。建议: 这是一道考察 链表综合操作的题目,不算容易,可以练一练 使用虚拟头结点。建议: 本题最关键是要理解 虚拟头结点的使用技巧,这个对链表题目很重要。照着板子打的代码,却还是调不对,第二天才发现是头节点插入写错了。

2023-07-15 15:25:48 155 1

原创 代码随想录算法训练营第二天| 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II

本题关键在于理解滑动窗口,这个滑动窗口看文字讲解 还挺难理解的,建议大家先看视频讲解。: 本题关键还是在转圈的逻辑,在二分搜索中提到的区间定义,在这里又用上了。然后把l为零的子数组找好,每次把右指针前进一格,然后把左指针尽量往前移。易知数的绝对值最大,平方也就越大,即数组两端数的平方最大。数组类的题目重要的是思想,只要想明白了就可以很快做对。最后注意如果圈数是奇数,要手动把中间的数设为n*n。最后要注意反转一下,因为答案数组现在是递减排序的。设立左右指针,左指针为0,右指针为-1。

2023-07-13 13:05:00 386

原创 代码随想录算法训练营第一天| 704. 二分查找、力扣35、34题、 27. 移除元素。

如果已找到且当前数不是要删除的数,就交换快指针与慢指针各自的值,然后慢指针做加加,并把标记更新,如果下一个是要找的数,那么标记找到,否则就标记没扫到。我的方法是用左闭右闭来写,按照常规的方法写完,前面加一个特判,判断如果只有一个元素的情况(不判会爆)。用快指针扫一遍,如果没有找到且当前下标的值是要删除的数,就标记已找到,然后慢指针指向要删除的数的下标。: 暴力的解法,可以锻炼一下我们的代码实现能力,建议先把暴力写法写一遍。这题我用了双指针法,设立慢指针为-1,还设了一个判断是否找到的变量。

2023-07-12 21:54:44 500 1

空空如也

空空如也

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

TA关注的人

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