自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 代码随想录算法训练营总结

【代码】代码随想录算法训练营总结。

2024-01-25 10:40:49 399 1

原创 2.两数相加

不可以将两个链表转换成两个数再进行计算,然后重新转换成链表,数太大了。题目所给链表节点的范围是[1,100],所以我们无法通过将两个链表转换成两个数再进行计算,然后重新转换成链表,数太大了。进位carry的值为0或者1.这是因为两数相加的最大和再加上进位的1等于19,即9 + 9 + 1 = 19。下面问题的思路为:将两个链表转换成两个数再进行计算,然后重新转换成链表。检查进位是否等于1,如果等于1,则向链表追加一个值等于1的节点。链表逆序存储数字,要求得到数字相加的和,并逆序保存链表中。

2024-01-24 15:20:53 462

原创 84.柱状图中最大的矩形

给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1。求在该柱状图中,能够勾勒出来的矩形的最大面积。

2024-01-23 17:19:37 996

原创 503.下一个更大元素II 42.接雨水

503.下一个更大元素II 42.接雨水503.下一个更大元素II力扣题目链接(opens new window)给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素),输出每个元素的下一个更大元素。数字 x 的下一个更大的元素是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出 -1。示例 1:输入: [1,2,1]输出: [2,-1,2]解释: 第一个 1 的下一个更大的数是 2;数字 2 找不到下一个更大的数;第二个

2024-01-22 16:10:15 909

原创 739.每日温度 496.下一个更大元素 I

请根据每日 气温 列表,重新生成一个列表。对应位置的输出为:要想观测到更高的气温,至少需要等待的天数。如果气温在这之后都不会升高,请在该位置用 0 来代替。例如,给定一个列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是 [1, 1, 4, 2, 1, 1, 0, 0]。提示:气温 列表长度的范围是 [1, 30000]。每个气温的值的均为华氏度,都是在 [30, 100] 范围内的整数。

2024-01-19 15:27:12 914

原创 647.回文子串 516.最长回文子序列

给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。提示:输入的字符串长度不会超过 1000。

2024-01-18 14:19:45 786

原创 583.两个字符串的删除操作 72.编辑距离

给定两个单词 word1 和 word2,找到使得 word1 和 word2 相同所需的最小步数,每步可以删除任意一个字符串中的一个字符。

2024-01-18 11:02:30 368

原创 392.判断子序列 115.不同的子序列

给定字符串 s 和 t ,判断 s 是否为 t 的子序列。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。两个字符串都只由小写字符组成。

2024-01-17 16:25:15 372

原创 3.无重复字符的最长子串

给定一个字符串s,请你找出其中不含有重复字符的的长度。

2024-01-17 11:28:41 509

原创 1143.最长公共子序列 1035.不相交的线 53.最大子序和动态规划

给定两个字符串 text1 和 text2,返回这两个字符串的最长公共子序列的长度。一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。例如,“ace” 是 “abcde” 的子序列,但 “aec” 不是 “abcde” 的子序列。两个字符串的「公共子序列」是这两个字符串所共同拥有的子序列。若这两个字符串没有公共子序列,则返回 0。

2024-01-17 11:27:49 1917

原创 300.最长递增子序列 674.最长连续递增序列 718.最长重复子数组

给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。

2024-01-16 16:52:10 1609

原创 1004:最大连续1的个数 III

给定一个二进制数组nums和一个整数k,如果可以翻转最多k个0,则返回数组中连续1的最大个数。0。

2024-01-16 16:47:48 362

原创 309.最佳买卖股票时机含冷冻期 714.买卖股票的最佳时机含手续费

给定一个整数数组,其中第 i 个元素代表了第 i 天的股票价格。设计一个算法计算出最大利润。

2024-01-16 16:46:30 468

原创 123.买卖股票的最佳时机III 188.买卖股票的最佳时机IV

给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。

2024-01-15 16:27:09 773

原创 121.买卖股票的最佳时机 122.买卖股票的最佳时机II

给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0。

2024-01-15 15:32:45 1527

原创 198.打家劫舍 213.打家劫舍II 337.打家劫舍III

你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。偷窃到的最高金额 = 1 + 3 = 4。

2024-01-15 11:35:52 956

原创 62.不同路径 63.不同路径 II

一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?解释: 从左上角开始,总共有 3 条路径可以到达右下角。

2023-11-23 14:09:04 35

原创 509.斐波那契数 70. 爬楼梯 746. 使用最小花费爬楼梯

斐波那契数,通常用 F(n) 表示,形成的序列称为 斐波那契数列。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是: F(0) = 0,F(1) = 1 F(n) = F(n - 1) + F(n - 2),其中 n > 1 给你n ,请计算 F(n)。

2023-11-23 11:45:34 28

原创 738.单调递增的数字

例如:13332,从左往右遍历,找到第一个开始下降的数字3,往前再看下,是否还有等于3的数字,找到最前面那个3,将3改为2,然后将后面的各个数字置为9,最后为:12999。例如:1232123,从左往右遍历,找到第一个开始下降的数字3,将3改为2,然后将后面所有数字全部置为9,最后为:1229999 即为答案。【需要注意一点】:如果第一个开始下降的数字[i],前面还有与其相等的数字,需要找到最前面的一个数字作为上面所说的[i]说明: N 是在 [0, 10^9] 范围内的一个整数。空间复杂度 : O(N)

2023-11-20 17:53:23 73

原创 435.无重叠区间 763.划分字母区间 56. 合并区间

在你的代码中,当a[0]等于b[0]时,你的比较函数返回1,这意味着a[0]大于b[0]。这里注意下边界条件的处理: intervals[i - 1][1] > intervals[i][0] intervals[i - 1][1] <= intervals[i][0]定义数组第一个区间表示重叠区间,遍历二维数组的区间,如果出现重叠,那么更新重叠区间即可。[[1,2],[2,3],[3,4],[4,5]]区间在气球那道题中,应该需要两个箭。如果没有出现重叠,保存重叠区间,并更新重叠区间为当前区间。

2023-11-20 17:52:00 163

原创 860.柠檬水找零 406.根据身高重建队列 452. 用最少数量的箭引爆气球

可以看出首先第一组重叠气球,一定是需要一个箭,气球3,的左边界大于了 第一组重叠气球的最小右边界,所以再需要一支箭来射气球3了。对hi排序后: [[7,0], [7,1], [6,1], [5,0], [5,2],[4,4]]输入:people = [[7,0],[4,4],[7,1],[5,0],[6,1],[5,2]]插入[4,4]:[[5,0],[7,0],[5,2],[6,1],[4,4],[7,1]]插入[5,2]:[[5,0],[7,0],[5,2],[6,1],[7,1]]

2023-11-20 17:51:10 113

原创 1005.K次取反后最大化的数组和 134. 加油站 135. 分发糖果

记录每个加油站的剩余油量。如果从前向后遍历,rating[5]与rating[4]的比较 就不能用上 rating[5]与rating[6]的比较结果了。2.当前孩子和右孩子作比较,如果比右孩子大,那么当前孩子的糖为【右孩子糖数量+1和当前孩子糖数量】最大值。candy[i]只有取最大的才能既保持对左边candy[i - 1]的糖果多,也比右边candy[i + 1]的糖果多。贪心局部最优解:当前孩子和右孩子作比较,如果比右孩子大,那么当前孩子的糖为【右孩子糖数量+1和当前孩子糖数量】最大值。

2023-11-20 17:47:52 23

原创 122.买卖股票的最佳时机II 55. 跳跃游戏 45.跳跃游戏II

那么利润为:(prices[3] - prices[2]) + (prices[2] - prices[1]) + (prices[1] - prices[0])。股票可能存在持平的天数,股票的利润大小没有影响,同时会加大计算利润的难度,需要对持平的天数去重。假如第 0 天买入,第 3 天卖出,那么利润为:prices[3] - prices[0]假如第0天买入,第1天卖出.假如第1天买入,第2天卖出.假如第2天买入,第3天卖出.给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。

2023-11-20 17:45:04 580

原创 455.分发饼干 376. 摆动序列 53. 最大子序和

假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j]。如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。

2023-10-16 17:57:03 33

原创 93.复原IP地址 78.子集 90.子集II

给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。有效的 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 ‘.’ 分隔。例如:“0.1.2.201” 和 “192.168.1.1” 是 有效的 IP 地址,但是 “0.011.255.245”、“192.168.1.312” 和 “192.168@1.1” 是 无效的 IP 地址。

2023-09-23 21:54:40 46

原创 39. 组合总和 40.组合总和II 131.分割回文串

39. 组合总和 40.组合总和II 131.分割回文串

2023-09-19 17:22:54 155

原创 216.组合总和III17.电话号码的字母组合

找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字。示例 1: 输入: k = 3, n = 7 输出: [[1,2,4]]示例 2: 输入: k = 3, n = 9 输出: [[1,2,6], [1,3,5], [2,3,4]]

2023-09-15 18:05:41 41

原创 77. 组合

给定两个整数 n 和 k,返回 1 … n 中所有可能的 k 个数的组合。示例: 输入: n = 4, k = 2 输出: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ]

2023-09-13 22:41:17 57

原创 669.修剪二叉搜索树 108.将有序数组转换为二叉搜索树 538.把二叉搜索树转换为累加树

给定一个二叉搜索树,同时给定最小边界L 和最大边界 R。通过修剪二叉搜索树,使得所有节点的值在[L, R]中 (R>=L)。你可能需要改变树的根节点,所以结果应当返回修剪好的二叉搜索树的新的根节点。

2023-09-12 21:43:48 36

原创 235.二叉搜索树的最近公共祖先 701.二叉搜索树中的插入操作 450.删除二叉搜索树中的节点

给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]

2023-09-12 21:42:23 30

原创 530.二叉搜索树的最小绝对差 501.二叉搜索树中的众数 236. 二叉树的最近公共祖先

给你一棵所有节点为非负值的二叉搜索树,请你计算树中任意两节点的差的绝对值的最小值。示例:提示:树中至少有 2 个节点。

2023-09-12 21:35:47 30

原创 654.最大二叉树 617.合并二叉树 700.二叉搜索树中的搜索 98.验证二叉搜索树

654.最大二叉树 617.合并二叉树 700.二叉搜索树中的搜索 98.验证二叉搜索树

2023-09-05 11:14:18 110 1

原创 找树左下角的值 路径总和 从中序与后序遍历序列构造二叉树

终止条件 当遍历到叶子结点时,中止. 当已经遍历到符合条件的路径时,也就是result = true时,中止。给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。返回 true, 因为存在目标和为 22 的根节点到叶子节点的路径 5->4->11->2。给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。找到所有的路径中最长的,最长的路径中排在最左边,然后取出路径最后一个结点值即可。就是代替二叉树所有路径的path。

2023-09-01 16:49:56 186 1

原创 110.平衡二叉树 257. 二叉树的所有路径 404.左叶子之和

给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。示例 1:给定二叉树 [3,9,20,null,null,15,7]返回 true。示例 2:给定二叉树 [1,2,2,3,3,null,null,4,4]返回 false。

2023-08-30 23:26:44 69 1

原创 104.二叉树的最大深度 (优先掌握递归)111.二叉树的最小深度 (优先掌握递归)222.完全二叉树的节点个数(优先掌握递归)

给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例: 给定二叉树 [3,9,20,null,null,15,7],返回它的最大深度 3。

2023-08-29 09:31:03 105 1

原创 层序遍历 226.翻转二叉树 (优先掌握递归) 101. 对称二叉树 (优先掌握递归)

层序遍历 226.翻转二叉树 (优先掌握递归) 101. 对称二叉树 (优先掌握递归)

2023-08-28 14:22:59 90 1

原创 二叉树的递归遍历 二叉树的迭代遍历

二叉树的递归遍历 二叉树的迭代遍历

2023-08-25 11:17:00 55 1

原创 239. 滑动窗口最大值347.前 K 个高频元素

239. 滑动窗口最大值347.前 K 个高频元素

2023-08-23 22:45:24 54

原创 20. 有效的括号 1047. 删除字符串中的所有相邻重复项150. 逆波兰表达式求值

20. 有效的括号 1047. 删除字符串中的所有相邻重复项150. 逆波兰表达式求值

2023-08-20 23:25:53 96 1

原创 232.用栈实现队列225. 用队列实现栈

使用栈实现队列的下列操作:push(x) – 将一个元素放入队列的尾部。pop() – 从队列首部移除元素。peek() – 返回队列首部的元素。empty() – 返回队列是否为空。

2023-08-18 21:23:22 60 1

空空如也

空空如也

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

TA关注的人

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