自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 代码随想录算法训练营Day34 | 62.不同路径 63. 不同路径II 343.整数拆分 96.不同的二叉搜索树

机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。网格的左上角 (起始点在下图中标记为 “Start” )。返回满足题意的二叉搜索树的种数。机器人每次只能向下或者向右移动一步。返回机器人能够到达右下角的不同路径数量。机器人的移动路径中不能包含。),并使这些整数的乘积最大化。网格中的障碍物和空位置分别用。问总共有多少条不同的路径?测试用例保证答案小于等于。个节点组成且节点值从。你可以获得的最大乘积。

2025-04-28 14:41:09 337

原创 代码随想录算法训练营Day32 | 509. 斐波那契数 70. 爬楼梯 746. 使用最小花费爬楼梯

个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。F(n) = F(n - 1) + F(n - 2),其中 n > 1。开始,后面的每一项数字都是前面两项数字的和。你有多少种不同的方法可以爬到楼顶呢?请你计算并返回达到楼梯顶部的最低花费。表示)形成的序列称为。

2025-04-27 20:53:45 273

原创 代码随想录算法训练营Day31 | 56. 合并区间 738.单调递增的数字

一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。表示若干个区间的集合,其中单个区间为。请你合并所有重叠的区间,并返回。当且仅当每个相邻位数上的数字。的最大数字,且数字呈。时,我们称这个整数是。

2025-04-26 23:01:23 287

原创 代码随想录算法训练营Day30 | 452. 用最少数量的箭引爆气球 435. 无重叠区间 763.划分字母区间

先用map记录每个字母的最后出现位置,更新end为当前扫过的字母的最大边界,让当前字母范围能覆盖其他字母区间,确保相同字母只出现在一个区间,收集集合时机为当前遍历索引等于end的时候。每次找最小右边界,确保第一支箭可以射中尽可能多的气球,注意初始化count为1,因为至少需要一支箭。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。处射出一支箭,若有一个气球的直径的开始和结束坐标为。每次删除右边界更大的区间,确保每个区间的影响范围尽量小。返回一个表示每个字符串片段的长度的列表。

2025-04-24 15:38:14 3746

原创 代码随想录算法训练营Day29 | 134. 加油站 135. 分发糖果 860.柠檬水找零 406.根据身高重建队列

如果你可以按顺序绕环路行驶一周,则返回出发时加油站的编号,否则返回。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付。如果你能给每位顾客正确找零,返回。表示队列中一些人的属性(不一定按顺序)。你从其中的一个加油站出发,开始时油箱为空。请你给每个孩子分发糖果,计算并返回需要准备的。假设有打乱顺序的一群人站成一个队列,数组。顾客排队购买你的产品,(按账单。每位顾客只买一杯柠檬水,然后向你付。注意,一开始你手头没有任何零钱。支付的顺序)一次购买一杯。只用维护5和10两个变量。是排在队列前面的人)。

2025-04-23 16:11:33 3306

原创 计算机网络知识点总结 基础篇

​(Network Interface Layer,又称链路层或数据链路层)是TCP/IP模型的底层,负责将IP协议生成的。IP和子网掩码与运算得到网络号(前24位固定,后8位为主机号),可用IP范围为(网络号+1)~(广播地址-1)转换为适合物理网络传输的格式,并确保数据在本地网络中的可靠传输。转换为适合物理网络传输的格式,并确保数据在本地网络中的可靠传输。网络接口层负责负责将IP协议生成的。

2025-04-22 17:31:15 3674

原创 代码随想录算法训练营Day28 | 122.买卖股票的最佳时机II 55. 跳跃游戏 45.跳跃游戏II 1005.K次取反后最大化的数组和

在每一天,你可以决定是否购买和/或出售股票。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标,如果可以,返回。向后跳转的最大长度。生成的测试用例可以到达。找数组相邻元素为正数的添加到res中。你也可以先购买,然后在。以这种方式修改数组后,返回数组。可以多次选择同一个下标。处,你可以跳转到任意。给你一个非负整数数组。

2025-04-22 15:27:01 3132

原创 代码随想录算法训练营Day27 | 455.分发饼干 376. 摆动序列 53. 最大子序和

若某个区间和为负数则应该立即舍去重置区间,因为和为负数的区间会拖累后面的区间,result会一直记录最大区间和。假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。可以通过从原始序列中删除一些(也可以不删除)元素来获得,剩下的元素保持其原始顺序。,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。你的目标是满足尽可能多的孩子,并输出这个最大数值。,这是能让孩子们满足胃口的饼干的最小尺寸;优先满足胃口最小的孩子,从尺寸最小的饼干开始匹配。

2025-04-22 10:27:00 3059

原创 代码随想录算法训练营Day25 | 491.递增子序列 46.全排列 47.全排列 II

这里的剪枝需要判断当前元素和前一个元素相同且used判断为false,说明当前元素已经在其他树枝上被处理,避免重复集合需要跳过。数组中可能含有重复元素,如出现两个整数相等,也可以视作递增序列的一种特殊情况。,找出并返回所有该数组中不同的递增子序列,递增子序列中。给定一个可包含重复数字的序列。给定一个不含重复数字的数组。返回所有不重复的全排列。

2025-04-21 16:15:38 3050

原创 代码随想录算法训练营Day24 | 93.复原IP地址 78.子集 90.子集II

回溯终止条件为当有三个点后说明已经被分为了四段且前三段都合法,检查最后一段是否合法并放入集合。先写检验当前ip段是否合法的逻辑:单个0,start>end,数字大于255。,其中可能包含重复元素,请你返回该数组所有可能的 子集(幂集)。有重复元素要注意在for循环中跳过不是首位且和前一位元素相同的元素。,用以表示一个 IP 地址,返回所有可能的。返回的解集中,子集可以按。返回该数组所有可能的子集(幂集)。之间组成,且不能含有前导。给定一个只包含数字的字符串。无重复元素正常递归就可以。,这些地址可以通过在。

2025-04-21 09:19:02 3217

原创 代码随想录算法训练营Day23 | 39. 组合总和 40.组合总和II 131.分割回文串

如果至少一个数字的被选数量不同,则两种组合是不同的。中的每个数字在每个组合中只能使用。分割成一些 子串,使每个子串都是。,并以列表形式返回。中可以使数字和为目标数。对于给定的输入,保证和为。给定一个候选人编号的集合。解集不能包含重复的组合。先对数组排序确保重复的数字。中所有可以使数字和为。所有可能的分割方案。

2025-04-19 14:52:18 3180

原创 代码随想录算法训练营Day22 | 77. 组合 216.组合总和III 17.电话号码的字母组合

给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。该列表不能包含相同的组合两次,组合可以以任何顺序返回。的字符串,返回所有它能表示的字母组合。所有可能的有效组合的列表。

2025-04-18 22:02:25 3051

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

改变保留在树中的元素的相对结构 (即,如果没有被移除,原有的父代子代关系都应当保留)。树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点。所以结果应当返回修剪好的二叉搜索树的新的根节点。注意,根节点可能会根据给定的边界发生改变。排列,请你将其转换为一棵 平衡 二叉搜索树。通过修剪二叉搜索树,使得所有节点的值在。,递归处理右子树(可能有部分节点在。,递归处理左子树(可能有部分节点在。(当前节点的值太大):,直接 ​。给你二叉搜索树的根节点。

2025-04-17 17:27:31 214

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

中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即可。给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。,新值和原始二叉搜索树中的任意节点值都不同。

2025-04-16 17:45:36 293

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

中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(二叉搜索树的中序遍历严格递增,定义前置指针,依次计算差值并更新最小差值。还是依据二叉搜索树中序遍历递增,定义双指针更新maxCount。给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。给你一个含重复值的二叉搜索树(BST)的根节点。差值是一个正数,其数值等于两值之差的绝对值。,找出并返回 BST 中的所有。给你一个二叉搜索树的根节点。

2025-04-16 11:38:19 202

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

想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)。你需要将这两棵树合并成一棵新二叉树。合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;返回以该节点为根的子树。方法二:通过递归分割数组构建树,每次需要创建新数组。null 的节点将直接作为新二叉树的节点。,判断其是否是一个有效的二叉搜索树。合并过程必须从两个树的根节点开始。给定二叉搜索树(BST)的根节点。方法二:更好理解的方式。给你一个二叉树的根节点。返回合并后的二叉树。

2025-04-15 17:56:11 170

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

方法一:层序遍历先找到最下层在找队列中第一个结点。的路径,这条路径上所有节点值相加等于目标和。这道题需要找到所有路径,因此递归方法不需要返回。是同一棵树的后序遍历,请你构造并返回这颗。递归方式找到路径需要立即返回因此需要返回值。路径总和等于给定目标和的路径。假设二叉树中至少有一个节点。和一个表示目标和的整数。是指没有子节点的节点。是指没有子节点的节点。是二叉树的中序遍历,

2025-04-14 17:50:58 166

原创 代码随想录算法训练营Day15 | 110.平衡二叉树 257. 二叉树的所有路径 404.左叶子之和 222.完全二叉树的节点个数

的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24。给定一个二叉树,判断它是否是 平衡二叉树。,返回所有从根节点到叶子节点的路径。层(从第 0 层开始),则该层包含。方法二:层序遍历累加count。给你一个二叉树的根节点。是指没有子节点的节点。,返回所有左叶子之和。,求出该树的节点个数。

2025-04-10 14:33:06 302

原创 代码随想录算法训练营Day14 | 226.翻转二叉树 101. 对称二叉树 104.二叉树的最大深度 111.二叉树的最小深度

使用前序遍历或者后序遍历递归,不能用中序遍历,否则会重复翻转子树。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。是指从根节点到最远叶子节点的最长路径上的节点数。层序遍历找到叶子结点后直接返回count。,翻转这棵二叉树,并返回其根节点。给定一个二叉树,找出其最小深度。叶子节点是指没有子节点的节点。给你一棵二叉树的根节点。给你一个二叉树的根节点。, 检查它是否轴对称。层序遍历,累加count。

2025-04-09 16:06:59 314

原创 代码随想录算法训练营Day13 | 二叉树的遍历 DFS、BFS

【代码】代码随想录算法训练营Day13 | 二叉树的遍历 DFS、BFS。

2025-04-08 15:57:33 137

原创 代码随想录算法训练营Day11 | 150. 逆波兰表达式求值 239. 滑动窗口最大值 347.前 K 个高频元素

先定义map统计频率,然后通过优先队列方式创建小顶堆,堆中每次弹出频率最小元素,保证最后留的为频率最大的元素,创建PriorityQueue时候注意要自定义比较器,通过比较器实现大顶堆或者小顶堆。这道题使用暴力法会超时,使用单调栈为最优方式,栈里按照从大到小的顺序排序,保证每次弹出的元素为窗口最大值,注意边界条件判断。定义栈,若遇到运算符则弹出两个元素进行运算,注意减法和乘法需要注意弹出顺序。的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的。返回一个表示表达式值的整数。

2025-04-06 23:43:59 344

原创 代码随想录算法训练营Day10 | 232.用栈实现队列 225. 用队列实现栈 20. 有效的括号 1047. 删除字符串中的所有相邻重复项

压栈(添加元素到栈顶)pop()- 弹栈(移除并返回栈顶元素)peek()- 查看栈顶元素(不移除)empty()- 检查栈是否为空- 查找元素位置(从栈顶开始计数,1-based)

2025-04-04 22:03:48 838

原创 代码随想录算法训练营Day9 | 151. 反转字符串中的单词 55. 右旋字符串(第八期模拟笔试)

字符串的右旋转操作是把字符串尾部的若干个字符转移到字符串的前面。给定一个字符串 s 和一个正整数 k,请编写一个函数,将字符串中的后面 k 个字符移到字符串的前面,实现字符串的右旋转操作。中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。例如,对于输入字符串 "abcdefg" 和整数 2,函数应该将其转换为 "fgabcde"。中使用至少一个空格将字符串中的。之间用单个空格连接的结果字符串。是由非空格字符组成的字符串。

2025-04-03 16:10:00 287

原创 代码随想录算法训练营Day8 | 344.反转字符串 541. 反转字符串II 卡码网:54.替换数字

给定一个字符串 s,它包含小写字母和数字字符,请编写一个函数,将字符串中的字母字符保持不变,而将每个数字字符替换为number。例如,对于输入字符串 "a1b2c3",函数应该将其转换为 "anumberbnumbercnumber"。先遍历旧的数组找数字个数,再根据数字个数创建新数组,创建两个指针一个扫描旧数组一个向新数组添加元素。编写一个函数,其作用是将输入的字符串反转过来。、使用 O(1) 的额外空间解决这一问题。不要给另外的数组分配额外的空间,你必须。,从字符串开头算起,每计数至。

2025-04-02 13:56:12 285

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

方法一:先将magazine的字符数组统计到map中,再用ransomNote的字符数组去map中获取对应字符,获取后字符数量减去1,若获取时某个字符的key不存在或者数量小于等于0则表示没有对应字符了直接返回false,若到最后获取结束后还没有返回false则表示全部获取成功返回true。同时注意去重逻辑处理,i一直右移,去重需要判断i和i-1元素是否相同才不会跳过元素,left和right指针需要在找到正确的三元组后再进行去重,去重后左右指针还要向内收缩一次。方法二:使用数组映射的方式,效率更快。

2025-04-01 17:50:13 328

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

方法二:定义两个set集合,先将nums1放入set1,再遍历nums2若set1中存在则加入到reSet,最后通过stream流的mapToInt方法将reSet集合中的元素映射到一个数组上并返回。方法二:用数组形式的哈希表统计字符频率,把s小写字母通过-'a'映射到数组索引,同时t数组消去对应数组索引,若最后数组全为0则两个字符串是字符异位。方法二:定义一个map,遍历计算target减去当前值的balance值判断是否在map中,边判断边存入,确保不会返回两个相同的坐标。整数,并返回它们的数组下标。

2025-04-01 00:04:11 341

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

先分别找出两个链表的总长度,并设置A链表为最长的链表(遍历完后别忘了重置指针),计算两个链表长度差,让A链表的指针移动长度差个单位,确保两个链表的尾部平齐,因为两个链表相交是在尾部相交的,最后用指针同时遍历两条链表一一比对,相等则直接返回。先用快慢指针判断是否有环,快指针相对于慢指针额外移动一个单位,若指针相遇则存在环,经过数学运算可得,头节点到入环处的距离等于相遇点到入环处的距离,定义两个指针同时遍历,相遇的结点则为入环结点。给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。

2025-03-31 16:31:29 270

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

方法一:遍历链表跳过值为val的节点,要注意头节点等于val的情况。以指示链表中的上一个节点。假设链表中的所有节点下标从。,请你反转链表,并返回反转后的链表。是指向下一个节点的指针/引用。如果是双向链表,则还需要属性。,请你删除链表中所有满足。给你一个链表的头节点。

2025-03-30 00:30:36 270

原创 代码随想录算法训练营Day2 | 209. 长度最小的子数组 59. 螺旋矩阵|| 58.区间和

前两个方向会正常填充后两个方向如果不检查,会试图重复填充已填充的中心点因此后两个方向需要显式检查边界条件,而前两个方向由于算法特性自然满足边界条件。

2025-03-27 21:50:05 230

原创 代码随想录算法训练营Day1 | 704. 二分查找 27. 移除元素 977.有序数组的平方

n。

2025-03-26 15:56:27 436

空空如也

空空如也

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

TA关注的人

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