LeetCode
Arbicoral
宠辱不惊,看庭前花开花落;
去留无意,望天上云卷云舒。
展开
-
LeetCode-25 -两两交换链表中的节点
给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。原创 2024-07-24 08:38:43 · 26 阅读 · 0 评论 -
LeetCode-101-对称二叉树
解题思路:判断2个二叉树是否可以相互翻转,考察同时处理2个二叉树的遍历情况。给你一个二叉树的根节点 root , 检查它是否轴对称。原创 2023-10-11 12:20:47 · 234 阅读 · 0 评论 -
LeetCode-226-翻转二叉树
给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。解题思路:先想清楚用哪种遍历顺序:前序和后序更好一点。原创 2023-10-11 11:59:09 · 188 阅读 · 0 评论 -
LeetCode-199-二叉树的右视图
解题思路: 在 102 的基础之上进行改进,一维数组每次只保存 size==1 时候的值。原创 2023-10-11 11:28:08 · 118 阅读 · 0 评论 -
LeetCode-107-二叉树的层序遍历Ⅱ
给你二叉树的根节点 root ,返回其节点值 自底向上的层序遍历。(即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)完全一样,只是最后一句每次都查到最前面.原创 2023-10-11 11:13:49 · 94 阅读 · 0 评论 -
LeetCode-102-二叉树的层序遍历
给你二叉树的根节点 root ,返回其节点值的 层序遍历。(即逐层地,从左到右访问所有节点)。的特点存储每次遍历的节点。原创 2023-10-11 11:02:57 · 117 阅读 · 0 评论 -
二叉树理论基础
如 i 位置的左孩子的值就是下标为 i×2+1 位置对应的元素的值,右孩子的值就是下标为 i×2+2 位置对应的元素的值.顺序存储通过数组来记录左右节点,通过索引可以得到左右节点。链式存储通过添加一对指针的方式来记录各左右节点。二叉树可以链式存储,也可以顺序存储。理论基础决定基本功。原创 2023-10-11 10:12:41 · 52 阅读 · 0 评论 -
LeetCode-94-二叉树的中序遍历
解题思路:递归,具体可以参考。原创 2023-10-10 09:42:21 · 104 阅读 · 0 评论 -
LeetCode-145-二叉树的后序遍历
解题思路:非递归,具体可以参考。解题思路:递归,具体可以参考。原创 2023-10-10 09:37:09 · 72 阅读 · 0 评论 -
LeetCode-144-二叉树的前序遍历
要先清楚前序遍历的顺序:先根节点,再左子树,再右子树。原创 2023-10-10 09:35:09 · 119 阅读 · 0 评论 -
LeetCode-503-下一个更大元素Ⅱ
给定一个循环数组 nums ( nums[nums.length - 1] 的下一个元素是 nums[0] ),返回 nums 中每个元素的 下一个更大元素。数字 x 的 下一个更大的元素 是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出 -1。解题思路:通过超过下标就取模的思路,其他和。原创 2023-10-09 21:14:01 · 216 阅读 · 0 评论 -
LeetCode-496-下一个更大元素
> 方法二代码实现:> 1. 先将nums1中的元素和下标都映射到map中,方便遍历nums2的时候查找> 2. 开始遍历nums2,存放的是下标,初始时将0放到stack中,开始判断栈口元素和当前元素的大小> - 若 栈口元素 < 当前元素的大小,再判断栈是否为空,并且map中是否包含栈顶元素下标对应的索引,都有的话再更新res数组;> - 若 栈口元素 = 当前元素的大小,直接入栈> - 若 栈口元素 > 当前元素的大小,直接入栈原创 2023-10-09 20:36:46 · 195 阅读 · 0 评论 -
LeetCode-2485-找出中枢整数
返回中枢整数 x。如果不存在中枢整数,则返回 -1。题目保证对于给定的输入,至多存在一个中枢整数。方法一:双指针:一前一后走,当sumLeft == sumRight并且i==j时退出while循环。1 和 x 之间的所有元素之和等于 x 和 n 之间所有元素之和。方法二:根据数学公式推导。原创 2023-10-09 19:39:51 · 234 阅读 · 0 评论 -
LeetCode-416-分割等和子集
可以看成有nums.length个物品,是否能装满容量是 sum/2 的背包,能装满说明可以,返回true;否则返回false。给你一个 只包含正整数 的 非空 数组 nums。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。解题思路:可以看成是背包问题,原创 2023-10-09 18:51:14 · 143 阅读 · 0 评论 -
LeetCode-11-盛最多水的容器
给定一个长度为 n 的整数数组 height。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i])。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。解题思路:可以使用双指针或者单调栈。返回容器可以储存的最大水量。说明:你不能倾斜容器。原创 2023-10-09 17:48:27 · 102 阅读 · 0 评论 -
0-1背包理论基础详解
0-1背包问题:有 n 种物品,每种物品只有1个,求解将哪些物品装入背包里物品价值总和最大。原创 2023-10-09 15:38:01 · 202 阅读 · 0 评论 -
LeetCode-96-不同的二叉搜索树
给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。解题思路:首先知道什么是二叉搜索树?原创 2023-10-09 10:38:22 · 105 阅读 · 0 评论 -
LeetCode-343-整数拆分
给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k >= 2 ),并使这些整数的乘积最大化。返回 你可以获得的最大乘积。还是根据动规五部曲,列出思路。原创 2023-10-09 10:05:10 · 74 阅读 · 0 评论 -
LeetCode-739-每日温度-单调栈
每次拿当前正在遍历的 temperatures[i] 和 栈口的元素比较,如果 temperatures[i] >栈口元素,那么计算当前两个索引的距离存到结果数组中后再弹出栈顶元素,继续比较当前栈顶的元素,直到栈顶元素比 temperatures[i] 大,将 i 压入栈,继续上述步骤。题目描述:给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。原创 2023-09-19 22:01:07 · 291 阅读 · 0 评论 -
LeetCode-63-不同路径Ⅱ-动态规划
机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish”)。一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用 1 和 0 来表示。解题思路:详见注释~原创 2023-09-13 17:19:18 · 143 阅读 · 0 评论 -
LeetCode-62-不同路径-动态规划
机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。问总共有多少条不同的路径?解题思路:详见注释~原创 2023-09-13 16:58:15 · 190 阅读 · 1 评论 -
LeetCode-746-使用最小花费爬楼梯-动态规划
给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。请你计算并返回达到楼梯顶部的最低花费。解题思路:注释中有详解。原创 2023-09-13 16:34:35 · 156 阅读 · 0 评论 -
LeetCode-70-爬楼梯
每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?需要 n 阶你才能到达楼顶。解题思路:注释中有详解。原创 2023-09-13 16:31:42 · 147 阅读 · 0 评论 -
LeetCode-37-解数独
数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。题目描述:编写一个程序,通过填充空格来解决数独问题。数独部分空格内已填入了数字,空白格用 ‘.’ 表示。数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。原创 2023-09-13 14:29:35 · 151 阅读 · 0 评论 -
LeetCode-77-组合-回溯算法
① 确定递归函数的参数和返回值;一般是 void,名字一般是 backtracking。③ 确定单层递归逻辑。原创 2023-09-13 14:06:49 · 75 阅读 · 0 评论 -
LeetCode-51-N皇后
每一种解法包含一个不同的 n 皇后问题 的棋子放置方案,该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。解题思路:和之前的回溯算法不同的是,N皇后难点是 处理的是二维数组,之前都是一维数组;按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。要注意的还是蛮多的,需要细心、小心、耐心!原创 2023-09-13 10:51:00 · 85 阅读 · 0 评论 -
LeetCode-47-全排列Ⅱ
解题思路:注意题目中给的是包含重复数字,所以需要去重操作;的序列 nums ,按任意顺序 返回所有不重复的全排列。题目描述:给定一个可。原创 2023-09-13 09:47:56 · 141 阅读 · 0 评论 -
LeetCode-46-全排列
题目描述:给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列。你可以 按任意顺序 返回答案。本题比较简单,因为题目给的是数组中没有重复的数字,就不需要使用去重操作。原创 2023-09-13 09:41:26 · 204 阅读 · 0 评论 -
LeetCode-90-子集Ⅱ
题目描述:给你一个整数数组 nums ,其中可能包含重复元素,请你返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。返回的解集中,子集可以按 任意顺序 排列。注意要先对数组排序,方便去重。相似,都需要去重操作。原创 2023-09-06 12:06:01 · 417 阅读 · 0 评论 -
LeetCode-78-子集
题目的要求是不能有重复的子集,其实给的数组是互不相同的,按照普通递归思路就好了。给你一个整数数组 nums ,数组中的元素。返回该数组所有可能的子集(幂集)。你可以按 任意顺序 返回解集。原创 2023-09-06 11:31:18 · 357 阅读 · 0 评论 -
LeetCode-93-复原IP地址
给定一个只包含数字的字符串 s ,用以表示一个 IP 地址,返回所有可能的有效 IP 地址,这些地址可以通过在 s 中插入 ‘.’ 来形成。你可以按 任何 顺序返回答案。例如:“0.1.2.201” 和 “192.168.1.1” 是 有效 IP 地址,但是 “0.011.255.245”、“192.168.1.312” 和 “192.168@1.1” 是 无效 IP 地址。题目描述:有效 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 ‘.’ 分隔。原创 2023-09-06 10:40:52 · 285 阅读 · 0 评论 -
LeetCode-131-分割回文串
给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串。返回 s 所有可能的分割方案。回文串 是正着读和反着读都一样的字符串。原创 2023-09-04 11:58:50 · 285 阅读 · 0 评论 -
LeetCode-40-组合总和Ⅱ
【代码】LeetCode-40-组合总和Ⅱ。原创 2023-09-04 11:18:06 · 233 阅读 · 0 评论 -
LeetCode-39-组合总和
【代码】LeetCode-39-组合总和。原创 2023-09-03 21:28:40 · 143 阅读 · 0 评论 -
LeetCode-17-电话号码的字母组合-回溯算法
这很奇怪的是如果我把 res 和 sb 写成全部变量,那么我提交的时候前面的样例的结果会出现在后面的样例结果中,没办法我就改了。题目描述:给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。LeetCode-17-电话号码的字母组合。原创 2023-09-03 21:09:53 · 142 阅读 · 0 评论 -
LeetCode-216-组合总和Ⅱ
【代码】LeetCode-216-组合总和Ⅱ。原创 2023-09-03 10:56:58 · 619 阅读 · 0 评论 -
LeetCode-2511-最多可以摧毁的敌人城堡数目
【代码】LeetCode-2511-最多可以摧毁的敌人城堡数目。原创 2023-09-02 18:07:52 · 485 阅读 · 0 评论 -
LeetCode-435-无重叠区间
解题思路:和之前的合并区间、汇总区间都比较相似,原创 2023-09-01 21:02:53 · 420 阅读 · 0 评论 -
LeetCode-452-用最少数量的箭引爆气球
在坐标 x 处射出一支箭,若有一个气球的直径的开始和结束坐标为 xstart,xend, 且满足 xstart ≤ x ≤ xend,则该气球会被 引爆。墙面上的气球记录在整数数组 points ,其中points[i] = [xstart, xend] 表示水平直径在 xstart 和 xend之间的气球。解题思路:思路不唯一,我就是把这道题变相成合并区间,并且是求区间的交集,因为射箭是在交集才能一箭N中,具体步骤见注释~给你一个数组 points ,返回引爆所有气球所必须射出的 最小 弓箭数。原创 2023-08-31 21:16:28 · 347 阅读 · 0 评论 -
LeetCode-135-分发糖果
这道题既要考虑左孩子和自己的大小,还要考虑右孩子和自己的大小,两边都要满足,一次遍历不能两者兼顾,因此需要遍历两次,一次考虑 右孩子 > 左孩子的情况,一次考虑 左孩子 > 右孩子的情况。题目描述:n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。请你给每个孩子分发糖果,计算并返回需要准备的 最少糖果数目。相邻两个孩子评分更高的孩子会获得更多的糖果。每个孩子至少分配到 1 个糖果。原创 2023-08-31 17:10:58 · 239 阅读 · 0 评论