自定义博客皮肤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. 组合总和 Ⅳ 70. 爬楼梯 (进阶)

题目:给你一个整数数组 表示不同面额的硬币,另给一个整数 表示总金额。请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 。假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带符号整数。示例 1:输入:amount = 5, coins = [1, 2, 5]输出:4解释:有四种方式可以凑成总金额:5=55=2+2+15=2+1+1+15=1+1+1+1+1示例 2:输入:amount = 3, coins = [2]输出:0解释:只

2024-09-05 20:41:44 838

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

我们定义。

2024-09-04 21:57:06 1015

原创 代码随想录算法训练营第三十五天| 416. 分割等和子集

题目:给你一个 只包含正整数 的 非空 数组 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。示例 1:输入:nums = [1,5,11,5]输出:true解释:数组可以分割成 [1, 5, 5] 和 [11] 。示例 2:输入:nums = [1,2,3,5]输出:false解释:数组不能分割成两个元素和相等的子集。提示:思路:这个问题可以通过动态规划来解决,本质上是一个“0-1 背包问题”。我们可以将问题转化为:是否能从数组 中选出一些数,使得它们的和等

2024-09-03 21:08:27 428

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

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

2024-09-02 22:20:55 571

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

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

2024-08-31 22:52:04 691

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

56. 合并区间56. 合并区间题目:以数组intervals表示若干个区间的集合,其中单个区间为。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].[[1,5]]区间 [1,4] 和 [4,5] 可被视为重叠区间。思路:要解决合并重叠区间的问题,可以使用贪心算法。:首先,将所有区间按照起始位置starti进行排序。

2024-08-30 22:50:07 364

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

首先,遍历字符串。

2024-08-29 22:26:55 583

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

134. 加油站134. 加油站题目:在一条环路上有n个加油站,其中第i个加油站有汽油gas[i]升。你有一辆油箱容量无限的的汽车,从第i个加油站开往第i+1个加油站需要消耗汽油cost[i]升。你从其中的一个加油站出发,开始时油箱为空。给定两个整数数组gas和cost,如果你可以按顺序绕环路行驶一周,则返回出发时加油站的编号,否则返回-1。如果存在解,则它是的。3从 3 号加油站(索引为 3 处)出发,可获得 4 升汽油。此时油箱有 = 0 + 4 = 4 升汽油。

2024-08-28 22:00:47 956

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

122.买卖股票的最佳时机II122.买卖股票的最佳时机II题目:给你一个整数数组prices,其中prices[i]表示某支股票第i天的价格。在每一天,你可以决定是否购买和/或出售股票。你在任何时候只能持有股票。你也可以先购买,然后在出售。返回你能获得的利润。7在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5 - 1 = 4。

2024-08-27 23:40:09 896

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

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

2024-08-26 23:38:31 816

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

491.递增子序列491.递增子序列题目:给你一个整数数组nums,找出并返回所有该数组中不同的递增子序列,递增子序列中。你可以按返回答案。数组中可能含有重复元素,如出现两个整数相等,也可以视作递增序列的一种特殊情况。[[4,4]]思路:要解决这个问题,可以使用回溯法。

2024-08-24 20:38:59 922

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

93.复原IP地址93.复原IP地址正好由四个整数(每个整数位于0到255之间组成,且不能含有前导0),整数之间用'.'分隔。给定一个只包含数字的字符串s,用以表示一个 IP 地址,返回所有可能的,这些地址可以通过在s中插入'.'来形成。你重新排序或删除s中的任何数字。你可以按顺序返回答案。s = "0000"思路:这个问题要求我们从一个只包含数字的字符串中插入来生成所有可能的有效 IP 地址。我们可以用回溯法来解决这个问题我们在字符串中插入来划分 IP 地址的四个部分,寻找所有可能的划分方式。

2024-08-23 21:42:13 716

原创 代码随想录算法训练营第二十三天| 39. 组合总和

题目:给你一个 无重复元素 的整数数组 和一个目标整数 ,找出 中可以使数字和为目标数 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。 中的 同一个 数字可以 无限制重复被选取 。如果至少一个数字的被选数量不同,则两种组合是不同的。 对于给定的输入,保证和为 的不同组合数少于 个。示例 1:输入:candidates = target = 输出:[[2,2,3],[7]]解释:2 和 3 可以形成一组候选,2 + 2 + 3 = 7 。注意 2 可以使用多次。

2024-08-22 21:54:06 836

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

77. 组合77. 组合题目:给定两个整数n和k,返回范围[1, n]中所有可能的k个数的组合。你可以按返回答案。[2,4],[3,4],[2,3],[1,2],[1,3],[1,4],[[1]]给定n和k,要求从[1, n]范围内选出k个数字的所有组合。: 我们从空组合开始,然后逐步增加元素。: 从当前的数字start开始,我们可以选择一个数字i)加入当前组合,然后递归地去选择下一个数字。: 在每次选择一个数字加入当前组合后,我们递归地选择下一个数字,直到组合的长度达到k。

2024-08-21 22:08:03 768

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

题目:给你二叉搜索树的根节点root,同时给定最小边界low和最大边界high。通过修剪二叉搜索树,使得所有节点的值在中。修剪树改变保留在树中的元素的相对结构 (即,如果没有被移除,原有的父代子代关系都应当保留)。可以证明,存在。所以结果应当返回修剪好的二叉搜索树的新的根节点。注意,根节点可能会根据给定的边界发生改变。[1,null,2][1, 104]思路:为了实现修剪二叉搜索树的功能,我们可以使用递归的方法遍历树,并根据节点的值相对于low和high的情况来决定是否保留该节点以及如何调整其子树。

2024-08-20 22:17:16 1006

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

中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(要在二叉搜索树(BST)中插入一个新的值,我们可以利用二叉搜索树的性质:左子树中的所有节点值都小于根节点,右子树中的所有节点值都大于根节点。例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]要在二叉搜索树中找到两个节点的最近公共祖先,可以利用二叉搜索树的性质:对于任何节点。的值,可以确定最近公共祖先的位置。

2024-08-19 19:55:53 718

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

题目:给你一个二叉搜索树的根节点root,返回。差值是一个正数,其数值等于两值之差的绝对值。11思路:要解决这个问题,我们可以利用二叉搜索树(BST)的性质。BST 中的节点值是有序的(中序遍历结果是升序的),这使得我们可以通过中序遍历来找到最小差值。:在中序遍历过程中,我们将访问树中的节点值并将其存储在一个数组中。由于 BST 的中序遍历是有序的,数组中的值也会是升序的。:一旦我们有了升序的节点值数组,我们只需要遍历数组,并计算相邻元素之间的差值,找到最小差值即可。

2024-08-17 22:27:22 826

原创 代码随想录算法训练营第十七天(二)| 700.二叉搜索树中的搜索 98.验证二叉搜索树

700.二叉搜索树中的搜索题目:给定二叉搜索树(BST)的根节点root和一个整数值val。你需要在 BST 中找到节点值等于val的节点。返回以该节点为根的子树。如果节点不存在,则返回null。[2,1,3][][1, 5000]nullptrvalvalval98.验证二叉搜索树题目:给你一个二叉树的根节点root,判断其是否是一个有效的二叉搜索树。子树truefalse根节点的值是 5 ,但是右子节点的值是 4。

2024-08-16 22:51:44 331

原创 代码随想录算法训练营第十七天(一)| 654.最大二叉树 617.合并二叉树

654.最大二叉树题目:给定一个不重复的整数数组nums。可以用下面的算法从numsnums返回 nums构建的最大二叉树。递归调用如下所示:- [3,2,1,6,0,5] 中的最大值是 6 ,左边部分是 [3,2,1] ,右边部分是 [0,5]。- [3,2,1] 中的最大值是 3 ,左边部分是 [] ,右边部分是 [2,1]。- 空数组,无子节点。- [2,1] 中的最大值是 2 ,左边部分是 [] ,右边部分是 [1]。- 空数组,无子节点。

2024-08-16 22:45:05 1058

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

题目:给定一个二叉树的root,请找出该二叉树的节点的值。假设二叉树中至少有一个节点。17思路:要找到二叉树最底层最左边的节点的值,我们可以使用广度优先搜索(BFS)的方法来解决这个问题。BFS是一种层序遍历算法,它会逐层遍历树的节点,这样我们可以很容易地找到最底层的最左边的节点。:遍历结束时,最后一个记下的节点值就是二叉树最底层最左边节点的值。

2024-08-15 21:59:48 856

原创 代码随想录算法训练营第十五天(二)| 404.左叶子之和 222.完全二叉树的节点个数

要计算一棵完全二叉树的节点数,可以利用完全二叉树的特性来优化计算过程。完全二叉树的特性是:如果树的左子树高度等于右子树高度,那么左子树是满的,可以直接通过公式计算节点数;的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。在遍历过程中,我们检查每个节点的左子节点是否是叶子节点(即没有左右子节点),如果是,则将其值累加到结果中。要计算二叉树中所有左叶子节点的和,可以使用递归遍历树的方法。,求出该树的节点个数。

2024-08-14 22:16:54 661

原创 代码随想录算法训练营第十五天(一)| 110.平衡二叉树 (优先掌握递归)257. 二叉树的所有路径

110.平衡二叉树题目:给定一个二叉树,判断它是否是 平衡二叉树truefalseroot = []true[0, 5000]思路:首先了解一下概念:平衡二叉树平衡二叉树(Balanced Binary Tree)是指一棵二叉树中每个节点的左右子树的高度差不超过1。换句话说,二叉树中的任意节点的左右子树的高度差最多为1,并且左右子树本身也是一棵平衡二叉树。要判断一棵二叉树是否是平衡二叉树,可以使用递归的方法来检查每个节点的左右子树的高度差。

2024-08-14 22:05:54 491

原创 代码随想录算法训练营第十四天(二)|104.二叉树的最大深度 111.二叉树的最小深度

104.二叉树的最大深度。

2024-08-13 22:36:23 364

原创 代码随想录算法训练营第十四天(一)| 226.翻转二叉树 101. 对称二叉树

226.翻转二叉树题目:给你一棵二叉树的根节点root,翻转这棵二叉树,并返回其根节点。

2024-08-13 22:16:47 408

原创 代码随想录算法训练营第十三天(二)|二叉树的层序遍历

层序遍历是一种广度优先搜索(BFS)的遍历方式,它按照从上到下、从左到右的顺序访问二叉树的所有节点。我们可以使用队列来实现层序遍历。

2024-08-12 21:12:08 116

原创 代码随想录算法训练营第十三天(一)|二叉树递归遍历(前序,中序,后序遍历)

函数分别实现了前序遍历、中序遍历和后序遍历的递归遍历。否则,按照相应的顺序访问节点,并递归地调用自身来遍历左右子树。首先,我们需要定义一个二叉树节点的结构体,包含一个整数值和两个指向左右子节点的指针。接下来,我们分别实现前序遍历、中序遍历和后序遍历的函数。每次递归调用都会将当前节点的子树作为新的根节点,然后继续进行相同的遍历过程。前序遍历的实现很简单,首先访问根节点,然后递归地访问左子树和右子树。中序遍历先访问左子树,然后访问根节点,最后访问右子树。后序遍历先访问左子树,然后访问右子树,最后访问根节点。

2024-08-12 17:00:16 452

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

给你一个字符串数组tokens,表示一个根据表示的算术表达式。请你计算该表达式。返回一个表示表达式值的整数。'+''-''*''/'9该算式转化为常见的中缀算术表达式为:((2 + 1) * 3) = 96该算式转化为常见的中缀算术表达式为:(4 + (13 / 5)) = 622该算式转化为常见的中缀算术表达式为:= 17 + 5= 22"+""-""*""/"逆波兰表达式是一种后缀表达式,所谓后缀就是指算符写在后面。

2024-08-10 13:44:36 662

原创 代码随想录算法训练营第十天(二)|20. 有效的括号 1047. 删除字符串中的所有相邻重复项

例如,在 "abbaca" 中,我们可以删除 "bb" 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 "aaca",其中又只有 "aa" 可以执行重复项删除操作,所以最后的字符串为 "ca"。分析题目,消除相邻的相同元素,那么我们可以用栈来存放遍历过的元素,当遍历当前的这个元素的时候,去栈里看一下我们是不是遍历过相同数值的相邻元素,如果相同,消除它。括号匹配问题是很经典的栈的问题,首先,括号是两两成对的,如果出现奇数个,那么一定pass。,判断字符串是否有效。

2024-08-09 14:21:42 439

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

请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(pushpoppeekempty):实现MyQueueint pop()int peek()truefalsesizeis empty。

2024-08-09 13:41:02 1017

原创 代码随想录算法训练营第九天|151.翻转字符串里的单词 卡码网:55.右旋转字符串

给你一个字符串s,请你反转字符串中的顺序。是由非空格字符组成的字符串。s中使用至少一个空格将字符串中的分隔开。返回顺序颠倒且之间用单个空格连接的结果字符串。输入字符串s中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。s = "反转后的字符串中不能存在前导空格和尾随空格。如果两个单词间有多余的空格,反转后的字符串需要将单词间的空格减少到仅有一个。' 's。

2024-08-08 15:29:30 856

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

编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组s的形式给出。不要给另外的数组分配额外的空间,你必须、使用 O(1) 的额外空间解决这一问题。

2024-08-07 16:18:13 685

原创 代码随想录算法训练营第七天(二)|15.三数之和 18.四数之和

给你一个整数数组nums,判断是否存在三元组满足i!= ji!= k且j!= k,同时还满足。请你返回所有和为0且不重复的三元组。答案中不可以包含重复的三元组。不同的三元组是 [-1,0,1] 和 [-1,-1,2]。注意,输出的顺序和三元组的顺序并不重要。[]唯一可能的三元组和不为 0。[[0,0,0]]唯一可能的三元组和为 0。

2024-08-06 18:33:34 422

原创 代码随想录算法训练营第七天(一)| 454.四数相加II 383. 赎金信

给你四个整数数组nums1nums2nums3和nums4,数组长度都是n,请你计算有多少个元组2两个元组如下:1。

2024-08-06 16:08:10 754

原创 代码随想录算法训练营第六天(一)|242.有效的字母异位词

给定两个字符串s和t,编写一个函数来判断t是否是s的字母异位词。若s和t中每个字符出现的次数都相同,则称s和t互为字母异位词。

2024-08-05 08:36:52 352

原创 代码随想录算法训练营第四天(二)|面试题 02.07. 链表相交 142.环形链表II

给你两个单链表的头节点headA和headB,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回null。图示两个链表在节点c1开始相交题目数据整个链式结构中不存在环。,函数返回结果后,链表必须。相交节点的值为 8 (注意,如果两个链表相交则不能为 0)。从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为 [5,0,1,8,4,5]。在 A 中,相交节点前有 2 个节点;在 B 中,相交节点前有 3 个节点。

2024-08-03 16:32:03 826

原创 代码随想录算法训练营第四天(一)|24. 两两交换链表中的节点 19.删除链表的倒数第N个节点

给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。

2024-08-03 15:28:20 906

原创 代码随想录算法训练营第三天 (思!)| 206.反转链表(双指针写法)

首先定义一个p指针,指向头结点,再定义一个q指针,指向头结点的另一边,也就是初始化为null。然后就要开始反转了,首先要把 p->next 节点用临时tmp指针保存一下,也就是保存一下这个节点。为什么要保存一下这个节点呢,因为接下来要改变 p->next 的指向了,将p->next 指向q ,此时已经反转了第一个节点了。接下来就是使用while循环不断重复,直到p指针指向NULL,也就是表尾,q指针就指向了新的头结点。,请你反转链表,并返回反转后的链表。

2024-08-02 20:45:23 167

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

大佬请指教!内存错误"heap-use-after-free",这是因为在C++中,当使用delete关键字释放对象的内存后,该对象仍然会保留指向已经被释放内存的指针。这个指针称为悬挂指针(Dangling Pointer)。如果我们试图访问已经被释放的内存,就会触发"heap-use-after-free"错误。既然这样的话,那我们只好修改源代码了。换个思路:(直接在原链表改)/*** int val;* };// 删除非头结点。

2024-08-02 20:29:54 1217

原创 代码随想录算法训练营第二天 (思!)| 209.长度最小的子数组(滑动窗口思路)

给定一个含有n个正整数的数组和一个正整数target找出该数组中满足其总和大于等target的长度最小的,并返回其长度如果不存在符合条件的子数组,返回0。2子数组[4,3]是该条件下的长度最小的子数组。10。

2024-08-01 18:55:50 353

原创 代码随想录算法训练营第二天 (写!)| 209.长度最小的子数组、 59.螺旋矩阵II

给定一个含有n个正整数的数组和一个正整数target找出该数组中满足其总和大于等于target的长度最小的,并返回其长度如果不存在符合条件的子数组,返回0。2子数组[4,3]是该条件下的长度最小的子数组。10。

2024-08-01 18:35:03 775

空空如也

空空如也

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

TA关注的人

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