自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 代码随想录算法训练营第四十四天|完全背包、518. 零钱兑换 II、377. 组合总和 Ⅳ

本题和 494.目标和 这道题本质是一致的,因为494已经写卡住了,这题听的就懵住了。本题和 494.目标和 这道题本质是一致的,因为494已经写卡住了,这题听的就懵住了。518. 零钱兑换 II (一刷卡住了)377. 组合总和 Ⅳ(一刷卡住了)

2023-06-06 17:36:17 155

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

本题就和 昨天的416. 分割等和子集很像了,可以尝试先自己思考做一做。动态规划之背包问题,这个背包最多能装多少?LeetCode:1049.最后一块石头的重量II_哔哩哔哩_bilibili代码随想录题解思路:本题简化模型仍然是01背包问题,但是不看卡哥视频说明,还真抽象不了01背包问题,因为本题的实质就是数字的碰撞游戏,而且还是任意两个数的碰撞,如果相同,则碰撞为0,如果不等,则碰撞后两数相减。

2023-06-06 17:28:52 335

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

*以[3,3,3,4,5]为例说明,这群数字和为18,如果我用9去装这些数字,最大正好能装到9,是不是意味着,能把这群数字分成两堆,因此背包容量应该遍历到9才对。一维的理解需要在理解二维的基础上进行优化的,其实只要关注背包容量j下所取商品使得背包取最大价值,这就是一维的原理,具体的还有很多小细节,比如只能从后往前遍历,对听卡哥视频的说明就好,理解万岁。1、物品的数量就是数组的大小,注意这里是从取第一件一直到取第i件遍历的(取第0件用来初始化的),每件物品的价值就是数组中的元素值大小;

2023-06-04 16:36:10 615

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

依然是动态规划的常规题,跟着卡哥按部就班刷下来确实有点感觉了,想知道输入n后,即有n个节点一共有多少种不同二叉搜素树的个数,还是得依赖于有n-1个节点时构成的二叉搜索树的个数,但是需要考虑左右子树在不同的节点个数情况下的排列组合,具体说明见代码注释!2、拆成三个数(dp[i]至少会拆分成两个数)及以上的情况:dp[3]就是看dp[2]*1、dp[1]*2 ,dp[4]就是看dp[3]*1、dp[2]*2、dp[1]*3。1、拆成两个数的情况:12 , 21。96.不同的二叉搜索树。

2023-06-03 17:19:49 145

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

看完卡哥视频题解还是思路蛮清晰的,还是只依赖于上一步的结果去判断下一步的结果,这里一定需要理解清楚dp[i][j]的含义:从(0,0)走到(i,j)总共有多少种不同的路径,才好明白为什么初始化dp[0][n] = 1, dp[m][0] = 1,因为这里dp数组的含义是路径的方法,不是步数,不是步数,不是步数!所以按照这种思路去考虑dp数组初始化的值!本题思路和62.不同路径一样,只不过多了一个障碍物的判断,只不过需要根据给定障碍物网格进行dp数组的初始化,以及结果的计算方式!具体的判断条件见代码注释!

2023-06-02 16:49:54 436

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

能知道是排列组合,但是自己想的超复杂,代码实现更是一团糟!这里可以先考虑离n阶台阶最近的两个台阶 n-1阶和n-2阶 跨的方式,有点递归的味道,但是一刷我真的,绕递归会被枪毙的,还是回归到本题主要的动态规划问题上,使用数组保存跨到n阶的方式,按上面方法考虑之后会发现和斐波那契数列数列一样,然后依然按照斐波那契数列的递推公式,从前往后遍历,将跨到n阶的方式保存到 n+1 维的dp数组中,注意这里如果n <= 2 的话直接赋值就好,将 n=3 作为遍历的初始条件,将 i <=n 作为遍历的终止条件。

2023-06-01 18:13:36 545

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

可以看看贪心算法的总结,贪心本来就没啥规律,能写出个总结篇真的不容易了。代码随想录。

2023-05-31 17:44:18 546

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

进行合并后的区间(如果可以合并的话),其实也就等价于上一个数组的右边界和当前数组的左边界进行比较,如果上一个数组右边界大于等于当前数组的左边界,因此(如果可以合并的话)也省略了再次重复添加的过程!!!

2023-05-31 15:52:35 583

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

看完卡哥的视频之后才发现原来就是简单的计数模拟,题目给的条件,只有5,10,20,使得实现逻辑思路比较固定,但是贪心算法的题目第一次写确实没有什么思路,题目的逻辑问题感觉都没这么思考过问题,只能多听多看多刷了!就是这题需要考虑身高和个数两个维度,因此需要一个维度一个维度的去考虑,本题就是先按照身高排序之后,优先按身高高的people的k来插入,后序插入节点也不会影响前面已经插入的节点,最终按照k的规则完成了队列。本题是一道 重叠区间的题目,好好做一做,因为明天三道题目,都是 重叠区间。

2023-05-30 22:28:14 132

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

解法就是先把数组按绝对值从大到小排列,然后先将数组里面的负数取反为整数,如果k的次数还剩余,在一个劲的逮着绝对值最小的数取反,这里对排在最后也是最小的数取反也有技巧就是如果剩余的k的次数是奇数,只需要最后的数取一次反即可,如果是偶数,取反过来取反过去,等于没取反,因此不用处理就行,最后就是按题意将数组中的各个数累加即可。按照右规则处理后,A一定比B2多,那么A一定会被更新(变大),此时变大后的A才会满足比右边分高时,分的糖果数量要更多。本题简单一些,估计大家不用想着贪心 ,用自己直觉也会有思路。

2023-05-26 20:13:59 50

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

本题的思路最关键的在于需在要判断当前覆盖范围遍历完后没有走到最后一个下标后,才能开启下一步 由遍历当前覆盖范围内确定的下一步更新的最大的覆盖范围 的跳跃,不用管具体下一步从那个位置跳跃,只要最后一个下标 在更新的最大覆盖范围内 就可以 在下一步跳跃 到达最后一个下标!往后遍历的时候,利用覆盖范围这个概念去判断能不能去到达最后一个下标,注意在遍历的时候其覆盖范围是不断变化的,需要在最大的覆盖范围内判断。本题同样不容易想出来。贪心就是这样,有的时候 会感觉简单到离谱,有时候,难的不行,主要是不容易想到。

2023-05-24 23:07:55 46

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

因为for循环遍历胃口大小的时候会无条件往后自增遍历,如果for循环去遍历胃口大小,饼干数量进行动态变化,就会当出现最小的饼干数量满足不了胃口时,那么饼干数量就不会动态变化了,由于是排序后的数组,那么后面比当前胃口还大的肯定也不会满足,饼干数量就不会变化了。,因为for循环遍历饼干数量的时候无条件自增遍历,如果饼干数量满足不了胃口时,那么会往后向饼干数量多的自增遍历,去一个一个匹配胃口大小,如果遍历的当前饼干数量满足胃口大小,那么胃口大小才会自增遍历(有条件遍历)。

2023-05-24 12:08:40 446

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

今天这三道题都非常难,那么这么难的题,为啥一天做三道?因为 一刷 也不求大家能把这么难的问题解决,所以 大家一刷的时候,就了解一下题目的要求,了解一下解题思路,不求能直接写出代码,先大概熟悉一下这些题,二刷的时候,随着对回溯算法的深入理解,再去解决如下三题。大家今天的任务,其实是 对回溯算法章节做一个总结就行。

2023-05-23 11:38:51 46

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

1、使用数组来做哈希,初始化数组里面的元素都设置为0,如果设置成全局变量,那么每轮递归的时候相同元素只能使用一次,以[4,6,7,7]来说,不能取到4677这个组合的,显然不符合题意,因为本题不是对排序后的数组进行树层去重的,因此出现相同元素不一定是相邻元素,只能出现一个记录一个。以上两点的解读就是为什么不把uesd设置为全局变量,使用used[nums[i] + 100] = 0把使用过的元素重置为0,而是直接嵌套在递归里面,可以及时往下搜索的时候及时置为0,不会造成树枝去重的原理,

2023-05-17 12:23:53 313

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

1、使用数组来做哈希,初始化数组里面的元素都设置为0,如果设置成全局变量,那么每轮递归的时候相同元素只能使用一次,以[4,6,7,7]来说,不能取到4677这个组合的,显然不符合题意,因为本题不是对排序后的数组进行树层去重的,因此出现相同元素不一定是相邻元素,只能出现一个记录一个。以上两点的解读就是为什么不把uesd设置为全局变量,使用used[nums[i] + 100] = 0把使用过的元素重置为0,而是直接嵌套在递归里面,可以及时往下搜索的时候及时置为0,不会造成树枝去重的原理。

2023-05-17 12:17:25 291

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

跟着卡哥代码随想录刷,只要前几道题都理解了,这题和40.组合总和II思路类似,要进行数层去重,在40.组合总和II中有详细说明,这里自己手写ac出来了还是有点小成就感的!本题来说不算难,理解至上,可以多看卡哥视频讲解思路也很清晰!本题看完卡哥视频思路还是清楚的,里面的有些细节一定要注意,具体的实现方式和代码见注释,说的很详细了,搭配卡哥的视频教程就是说一整个香住了!大家之前做了 40.组合总和II 和 78.子集 ,本题就是这两道题目的结合,建议自己独立做一做,本题涉及的知识,之前都讲过,没有新内容。

2023-05-16 18:10:36 88

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

卡哥里面说的思路还是很清楚的,多品味品味就好!这是基本的回溯算法求组合问题的代码思路,没有什么问题,能ac就是说,记录第一次不看题解写题,思想就是暴力算法的本质,剪枝条件的优化套路其实差不多,这里就是多了一个先对数组进行升序排序的操作,好更加有利于剪枝条件作判断!--> 说明此时还在第一轮里面,此时整个if语句的判断条件意思是:当在第一轮搜索所有的组合过程中,如果遇到和前一个元素相同时,直接跳过相邻元素相同组合的搜索,这就意味着不会出现 [ 1 1 6]这种组合了,显然是错误的。

2023-05-15 18:25:09 462

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

本题还是得有卡哥指路的,否则不会这么容易想到这么全面的解法,主要是先第一步:先把数字键盘通过数组下标映射成字符串,然后取字符串里面的字母组合,然后画出对应的树形结构进行一步一步分析,因为我第一次写这道题就是完全不知道从哪里下手,看到题目直接懵逼了,根据树形的求解思路再找出里面的关系就好。剪纸操作一:如果添加的元素和大于目标之和时,及时return结束本次递归,进行下一次递归操作即可;剪枝操作二,控制要达到k个个数时,最多还需要遍历到哪里结束即可,具体操作为。如果把 组合问题理解了,本题就容易一些了。

2023-05-14 18:10:16 459

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

很多细节值得注意,这里不只听卡哥视频就能领悟的,需要自己一步一步debug体会里面的回溯算法。其实在讲解二叉树的时候,就给大家介绍过回溯,这次正式开启回溯算法,大家可以先看视频,对回溯算法有一个整体的了解。对着 在 回溯算法理论基础 给出的 代码模板,来做本题组合问题,大家就会发现 写回溯算法套路。在回溯算法解决实际问题的过程中,大家会有各种疑问,先看视频介绍,基本可以解决大家的疑惑。本题关于剪枝操作是大家要理解的重点,因为后面很多回溯算法解决的题目,都是这个剪枝套路。

2023-05-13 17:26:43 65

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

这道题目比较难,比 添加增加和删除节点难的多,建议先看视频理解。题目链接/文章讲解:题解思路:多听卡哥视频讲解思路!!!自己肯定想不出来这么清晰的思路,然后多看把思路记在心里就好!!!!本题注意的是:根据二叉搜索树的特性,当节点的值小于low值时,需要对右子树的节点进行判断;当节点的值大于high值时,需要对左子树的节点进行判断!!!然后就是代码会一直对不符合区间的节点进行处理,如果遇到的节点符合区间值,最后也会一直遍历到root值为null值时,返回null值结束的。

2023-05-12 21:42:55 353

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

在二叉树中插入操作就是构造二叉树,一定能在叶子节点找到我们要插入的节点,然后可以根据二叉搜索树的特性比较当前节点的val值和给定的val,直接判断在其左子树还是右子树进行插入操作!听完卡哥视频讲解完思路还是清晰的,一刷一定要多听,多看,多刷,把思路打开!我想说的是一刷还是要多看、多听卡哥视频、多刷,把方法论掌握的融汇贯通才有资本自己去造轮子,这些都是基础算法,都没掌握怎么去谈更进阶的知识呢!迭代法和递归法实现的原理一致,其实我觉得这种迭代法本质就是递归的方法,只不过步骤不一样而已!

2023-05-11 19:14:03 220

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

多听卡哥视频的思路,学会融汇贯通!确实很巧妙,只需要遍历一遍二叉树即可得到答案,主要的原因就是每递归一次的时候就不断的更新检查maxCount是不是当前出现最高频率的元素,然后集合中也是不断去更新的,如果出现还有比之前次数更多的元素,就先把集合中的元素删除掉,然后再添加当前的元素!然后这题的主要是利用二叉搜索树的特性,进行中序遍历一定是递增的,通过双指针,用后一个节点的数值减去前一个节点pre的val值,然后找到连续的两两节点差值的最小即是本题所要返回的树中任意两不同节点值之间的最小差值。

2023-05-10 11:48:40 325

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

又是构造二叉树,昨天大家刚刚做完 中序后序确定二叉树,今天做这个 应该会容易一些, 先看视频,好好体会一下 为什么构造二叉树都是 前序遍历题解思路:先确定左闭右闭的原则,然后重构函数,使得每次递归不去构造新数组,根据下标索引值去进行递归,比较省时间!!!看卡哥视频思路解析,注意递归的终止条件,视频里面说的注意分辨,有缺陷其实!!!617.合并二叉树这次是一起操作两个二叉树了, 估计大家也没一起操作过两个二叉树,也不知道该如何一起操作,可以看视频先理解一下。优先掌握递归。

2023-05-08 23:01:34 286

原创 代码随想录算法训练营第十八天|513.找树左下角的值 (迭代法实现)、112. 路径总和(递归法实现)、 106.从中序与后序遍历序列构造二叉树(一刷后来明白了)

本题注意卡哥视频里面的思路不能直接写在主函数里面,如果直接写在主函数里面则根节点的数没法进行先减,直接判断的就是根节点除外的到叶子节点的路径之和是否等于目标值了,所以需要先写另一个遍历的方法,然后在主函数里面直接引用该方法,此时就是传入目标值就是targetSUm - 根节点.val值了。找左下角的值,本题用迭代法更好的理解,只需要记录最后一行的第一个元素的值即可,注意这里记录的方法,下面代码有注释和详解,然后踩过的坑就是之前把。放到了循环外面,debug之后才发现不能这样的!

2023-05-07 20:29:24 37

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

先看卡哥视频的大概思路,这里的变量第一遍写的时候有点绕晕了,一定要清楚为什么需要这些容器去装各种元素,本题输出的格式要求每条路径需要按照指定字符串的格式进行输出,所有每条路径拼接的时候可以用StingBuilder进行处理,这种处理API的字符串拼接问题效率高!说完变量的注意,本题最大的坑还是在于理解回溯这个概念,回溯和递归是一一对应的,有一个递归,就要有一个回溯,两个必须紧挨着写的,这样才能没递归完一次,就把存放路径中节点val值集合中的元素弹出一个,但一定是从最后一个在慢慢往前弹出!

2023-05-07 20:23:16 31

原创 代码随想录算法训练营第十六天| 104.二叉树的最大深度 (优先掌握递归)、111.二叉树的最小深度 (优先掌握递归)、222.完全二叉树的节点个数(优先掌握递归)

本题的代码思路也是通过求二叉树的最小高度去等价于求二叉树的最小深度,所以也是通过后序遍历的方式求出的最小二叉高度 == 最小的二叉深度,这里注意求最小高度的时候,要对左子树 == null,但是右子树!本题的求解的方法是通过求二叉树的最大高度等价于求二叉树的深度问题的,求二叉树的最大高度是通过后续的方式求解的,将叶子节点的高度返回给父节点,然后让父节点的高度加1操作就可以知道父节点的高度了,本题求解的关键在于理解。什么是深度,什么是高度,如何求深度,如何求高度,这里有关系到二叉树的遍历方式。

2023-05-04 23:25:22 53

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

这道题目 一些做过的同学 理解的也不够深入,建议大家先看我的视频讲解,无论做过没做过,都会有很大收获。这里卡哥视频说的也很透彻,感觉自己每次写的时候,剪枝条件考虑的不完善,卡哥代码逻辑写的也很清楚。按后序的遍历方式进行递归的操作,这里也要多看卡哥视频,文字描述功力还没达到,全靠悟性!看完本篇可以一口气刷十道题,试一试, 层序遍历并不难,大家可以很快刷了十道题。多看题解,二叉树这块还是得多看卡哥视频,多领悟其中的原理,全靠悟性。226.翻转二叉树 (优先掌握递归)先看视频讲解,会更容易一些。

2023-05-03 20:27:42 36

原创 代码随想录算法训练营第十四天|二叉树理论基础、递归遍历 (必须掌握)、迭代遍历 (基础不好的录友,迭代法可以放过)、统一迭代 (基础不好的录友,迭代法可以放过)

二叉树的递归都要多看卡哥视频去领悟真谛!!!理论基础需要了解 二叉树的种类,存储方式,遍历方式 以及二叉树的定义。

2023-05-03 20:22:17 38

原创 代码随想录算法训练营第十三天|239. 滑动窗口最大值(使用双端队列实现单调队列)、347.前 K 个高频元素 (使用优先级队列)

解决问题一:这里解题的很关键的一点是:循环遍历数组元素的时候,使用双端队列中的元素存储数组的下标值,因为后期要段判断每个滑动窗口范围内的元素的下表索引值的是不是在[i, i + k - 1]范围内,可以直接比较头结点下标是不是在[i - k + 1, i]范围内,从而去判断队列里面存储的是不是每个滑动窗口范围内的元素,不符合则要弹出。解决问题二:只要每次添加的时候,先判断添加的数组元素值要比存储在队列末尾下标对应的元素值的大,才在队列中该数组元素对应的下标值,否则弹出末尾的值即可实现单调队列。

2023-05-01 22:26:57 186

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

讲完了栈实现队列,队列实现栈,接下来就是栈的经典应用了。大家先自己思考一下 有哪些不匹配的场景,在看视频 我讲的都有哪些场景,落实到代码其实就容易很多了。题解思路:本题使用栈实现有效括号的判断,这里卡哥视频说的也很清楚为什么使用栈去实现,文字不好表述,全靠感觉!本题只需要考虑三种情况就能把所有情况都能包括:第一种情况:当遍历完字符串,与栈顶元素判断并弹出对应右端符号后,如果栈不为空,说明字符串里左方向的括号多余了 ,所以不匹配。如果为空,那么就是有效括号;

2023-04-29 19:56:48 59

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

这题在方法调用上有点绕,要明确本题是用双栈实现队列的先入先出的效果,所以定义的两个栈,可以直接调用Stack类里面的empty()方法去判断这双栈是不是为空,使用pop()删除栈的顶部元素、使用push()向栈中添加元素,使用peak()查看栈顶元素!但是注意本题是定义队列,并且具有和栈一样相同的四个功能的API,所以这是不同的意思!所以实现这些功能的过程中,一定要注意对stackIn栈、stackOut栈的先后操作顺序,可以多看卡哥视频进行理解!建议大家掌握一个队列的方法,更简单一些,可以先看视频讲解。

2023-04-28 21:22:10 70

原创 代码随想录算法训练营第九天 |28. 实现 strStr()(本题可以跳过)、459.重复的子字符串(本题可以跳过)、字符串总结、双指针回顾

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

2023-04-27 19:56:49 46

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

目录344.反转字符串541. 反转字符串II剑指Offer 05.替换空格151.翻转字符串里的单词剑指Offer58-II.左旋转字符串344.反转字符串建议: 本题是字符串基础题目,就是考察 reverse 函数的实现,同时也明确一下 平时刷题什么时候用 库函数,什么时候 不用库函数 题目链接/文章讲解/视频讲解:代码随想录题解思路:比较简单,没什么好说的其实,交换时记得用个临时变量保存一下就行class Solution { public

2023-04-26 23:26:01 46

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

使用哈希表的数据结构中的map集合解决问题,大体思路是:先用两层for循环计算数组1和数组2之间的元素之和,并将其结果出现的次数存放在map集合中一一对应的键值对中,其中用key键保存结果,用value保存结果出现的次数,再使用两层for循环计算数组3和数组4之间的元素之和,然后用0减去这两个元素之和判断是否在 存放在map集合的key键中 的结果出现过,最后去计算符合满足四数相加为0四元组的次数。本题 思路整体和 三数之和一样的,都是双指针,但写的时候 有很多小细节,需要注意,建议先看视频。

2023-04-25 21:00:37 70

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

此时存储字符串中每个字母的出现的个数,数组下标0-25分别一一对应a-z这26个字母的位置,通过遍历字符串,其对应的位置上字母出现的个数是根据给定字符串中每个字符减去小写字母a的ASCII码值(类似哈希函数)先确定字母存储的位置,再将对应位置上的元素+1操作(默认初始化中数组元素的值为0),这样就记录了给定字符串中每个字母出现的次数了,这里使用数组用来做哈希表的方法主要就是模拟了类似哈希函数的每个字符减去小写字母a的ASCII码值的算法。建议大家先看视频讲解,然后尝试自己写代码,在看文章讲解,加深印象。

2023-04-24 23:20:45 119

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

第二步:在找到快慢指针相遇的节点的情况下,此时一定是个环形链表,那么在重新定义两个指针,从头节点和在环内相遇的节点处开始一步一步去移动,这里已经判断是环形链表了,那么这两个指针一定会相遇的,这里的原理也可以去看卡哥视频,说的很详细,可以把环平铺开来就能分析一定会相遇,而且由于快指针走的路程是慢指针的两倍,因此慢指针一定是在第一圈就被快指针去追上的,至于为什么相遇的点就是环的入口卡哥的视频有推导公式也说的很清楚,文字版叙述不出来了,可以先只记下结论去用就好好!如果都没有相遇,说明一定不是环形链表。

2023-04-23 20:40:45 58

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

203.移除链表元素 (不使用虚拟节点)建议: 本题最关键是要理解 虚拟头结点的使用技巧,这个对链表题目很重要。解题思路:不使用虚拟节点来做,主要分两种情况去讨论,如下所示分析时一定先判断对哪些节点操作,首先要保证节点不能是空指针才能去对节点操作,再去判断节点的值域是否包含目标值val去进行判断即可。

2023-04-22 18:33:56 258

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

有序数组的平方使用双指针,先明确一点由于只能在两端取到最大值,所以一个指针指向起始位置,一个指针指向终止位置,因此只需要不断的比较左右这两个指针指向元素平方的数值大小,再把最大的值从后往前逆序放依次在新的数组里面即可,但注意这两个指针并不是同时进行移动的,只有满足左边指针指向的元素的平方大于右边指针指向元素的平方,左边指针才能右移一位,反之则右边指针左移一位,都需要在各自的if条件语句中进行判断决定!只有在第一步找到子数组,才能执行第二步。

2023-04-21 01:14:47 35

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

文章目录。

2023-04-19 21:31:59 340

原创 Tensorflow深度学习实战之(九)--损失函数

使用softmax解决分类问题,将原始输出层输出的结果变成概率分布,再在其基础上进行就分类问题提出的交叉熵损失函数,就回归问题提出的均方差损失函数。

2022-08-17 10:16:38 728

空空如也

空空如也

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

TA关注的人

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