leetcode
文章平均质量分 52
春风又。
这个作者很懒,什么都没留下…
展开
-
LeetCode矩阵置零
给定一个mxn的矩阵,如果一个元素为0,则将其所在行和列的所有元素都设为0。请使用原地算法。示例1输入matrix=[[1,1,1],[1,0,1],[1,1,1]]输出示例2输入输出。原创 2022-07-16 22:58:03 · 272 阅读 · 0 评论 -
剑指 Offer 28. 对称的二叉树
(终于自己做出来一道递归题了 太不容易了)请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:示例 1:示例 2:来源:力扣(LeetCode)链接:https://leetcode.cn/problems/dui-cheng-de-er-cha-shu-lcof著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出原创 2022-07-04 21:17:52 · 72 阅读 · 0 评论 -
LeetCode566. 重塑矩阵
在 MATLAB 中,有一个非常有用的函数 reshape ,它可以将一个 m x n 矩阵重塑为另一个大小不同(r x c)的新矩阵,但保留其原始数据。给你一个由二维数组 mat 表示的 m x n 矩阵,以及两个正整数 r 和 c ,分别表示想要的重构的矩阵的行数和列数。重构后的矩阵需要将原始矩阵的所有元素以相同的 行遍历顺序 填充。如果具有给定参数的 reshape 操作是可行且合理的,则输出新的重塑矩阵;否则,输出原始矩阵。示例 1:示例 2:方法一:将二维数组转换成一维数组,再将一维数组转换成所原创 2022-06-13 17:39:13 · 68 阅读 · 0 评论 -
LeetCode121. 买卖股票的最佳时机
给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。示例 1:示例 2:来源:力扣(LeetCode)链接:https://leetcode.cn/problems/best-time-to-buy-and-sell-stock著作权归领扣网络所有。商业转载请原创 2022-06-12 22:41:50 · 52 阅读 · 0 评论 -
LeetCode53. 最大子数组和
给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组 是数组中的一个连续部分。示例 1:示例 2:示例 3:定义一个临时变量temp用来储存临时和,result用来储存总的最大和。遍历数组,每遍历一个元素,将他和前面的已遍历的元素的和(temp)相加:(1)如果当前元素 + 前面已遍历的元素的和(temp)>= 该元素,说明前面已遍历的元素的和(temp) >= 0,相加的话可以使这个值继续增大。所以更新temp的值,使 temp = temp原创 2022-06-10 15:28:51 · 185 阅读 · 0 评论 -
LeetCode606. 根据二叉树创建字符串
目录标题思路代码标题给你二叉树的根节点 root ,请你采用前序遍历的方式,将二叉树转化为一个由括号和整数组成的字符串,返回构造出的字符串。空节点使用一对空括号对 “()” 表示,转化后需要省略所有不影响字符串与原始二叉树之间的一对一映射关系的空括号对。示例 1:输入:root = [1,2,3,4]输出:“1(2(4))(3)”解释:初步转化后得到 “1(2(4)())(3()())” ,但省略所有不必要的空括号对后,字符串应该是"1(2(4))(3)" 。示例 2:输入:ro原创 2022-05-26 20:16:09 · 94 阅读 · 0 评论 -
LeetCode101. 对称二叉树
给你一个二叉树的根节点 root , 检查它是否轴对称。示例 1:输入:root = [1,2,2,3,4,4,3] 输出:true示例 2:输入:root = [1,2,2,null,3,null,3] 输出:false思路比较左右子树的镜像关系 = 左右子树根节点的值是否相等 && 左子树的左子树 和 右子树的右子树是不是镜像关系 && 左子树的右子树 和 右子树的左子树 是不是镜像关系代码class Solution { public原创 2022-05-17 21:49:49 · 64 阅读 · 0 评论 -
LeetCode110. 平衡二叉树
目录题目思路代码题目给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点的左右两个子树的高度差的绝对值不超过 1 。示例 1:输入:root = [3,9,20,null,null,15,7] 输出:true示例 2:输入:root = [1,2,2,3,3,null,null,4,4] 输出:false示例 3:输入:root = [] 输出:true思路遍历二叉树,根据平衡二叉树的定义,计算每个节点的左右子树的高度,进原创 2022-05-17 20:59:41 · 58 阅读 · 0 评论 -
LeetCode104. 二叉树的最大深度
目录题目代码题目给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树[3,9,20,null,null,15,7],返回它的最大深度 3 。代码class Solution { public int maxDepth(TreeNode root) { if(root == null){ return 0; } in原创 2022-05-17 18:51:58 · 58 阅读 · 0 评论 -
LeetCode94. 二叉树的中序遍历
目录题目代码题目给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。示例 1:输入:root = [1,null,2,3] 输出:[1,3,2]示例 2:输入:root = [] 输出:[]示例 3:输入:root = [1] 输出:[1]代码class Solution { public List<Integer> inorderTraversal(TreeNode root) { List<Integer> re原创 2022-05-15 21:03:31 · 101 阅读 · 0 评论 -
LeetCode232. 用栈实现队列
文章目录题目代码:题目请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty):实现 MyQueue 类:void push(int x) 将元素 x 推到队列的末尾int pop() 从队列的开头移除并返回元素int peek()返回队列开头的元素boolean empty() 如果队列为空,返回 true ;否则,返回 false说明:你 只能 使用标准的栈操作 —— 也就是只有 push to top, peek/pop f原创 2022-05-11 17:55:36 · 48 阅读 · 0 评论 -
LeetCode100. 相同的树
目录题目思路:代码:题目给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例 1:输入:p = [1,2,3], q = [1,2,3] 输出:true示例 2:输入:p = [1,2], q = [1,null,2] 输出:false示例 3:输入:p = [1,2,1], q = [1,1,2] 输出:false思路:先比较两个数的跟节点的值是否相同,如果相同,再递归比较原创 2022-05-15 20:38:23 · 58 阅读 · 0 评论 -
LeetCode144. 二叉树的前序遍历
文章目录题目代码题目给你二叉树的根节点 root ,返回它节点值的 前序 遍历。示例 1:输入:root = [1,null,2,3] 输出:[1,2,3]示例 2:输入:root = [] 输出:[]示例 3:输入:root = [1] 输出:[1]示例 4:输入:root = [1,2] 输出:[1,2]示例 5:输入:root = [1,null,2] 输出:[1,2]代码class Solution { public List<In原创 2022-05-15 19:55:05 · 142 阅读 · 0 评论 -
LeetCode155. 最小栈
文章目录题目:思路代码题目:设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。实现 MinStack 类:MinStack() 初始化堆栈对象。void push(int val) 将元素val推入堆栈。void pop()删除堆栈顶部的元素。int top() 获取堆栈顶部的元素。int getMin() 获取堆栈中的最小元素。示例 1:输入: [“MinStack”,“push”,“push”,“push”,“getMin”,“pop”,“t原创 2022-05-11 18:40:42 · 54 阅读 · 0 评论 -
LeetCode225. 用队列实现栈
文章目录题目:思路:完整代码:代码分解:题目:请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。实现 MyStack 类:void push(int x) 将元素 x 压入栈顶。int pop() 移除并返回栈顶元素。int top() 返回栈顶元素。boolean empty() 如果栈是空的,返回 true ;否则,返回 false 。注意:你只能使用队列的基本操作 —— 也就是 push to back、pee原创 2022-05-11 15:15:28 · 231 阅读 · 0 评论 -
LeetCode20. 有效的括号
给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。示例 1:输入:s = “()” 输出:true示例 2:输入:s = “()[]{}” 输出:true示例 3:输入:s = “(]” 输出:false示例 4:输入:s = “([)]” 输出:false示例 5:输入:s = “{[]}” 输出:true解析:本题使用栈方法原创 2022-05-11 09:37:49 · 72 阅读 · 0 评论 -
LeetCode142. 环形链表 II
给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。不允许修改 链表。示例 1:输入:head = [3,2,0,-4], pos = 1输出:返回索引为原创 2022-05-10 11:14:10 · 65 阅读 · 0 评论 -
LeetCode141. 环形链表
给你一个链表的头节点 head ,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos 不作为参数进行传递 。仅仅是为了标识链表的实际情况。如果链表中存在环 ,则返回 true 。 否则,返回 false 。示例 1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个原创 2022-05-08 14:15:31 · 117 阅读 · 0 评论 -
LeetCode21. 合并两个有序链表
题目:将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例 1:输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]示例 2:输入:l1 = [], l2 = []输出:[]示例 3:输入:l1 = [], l2 = [0]输出:[0]代码如下:class Solution { public ListNode mergeTwoLists(ListNode list1, ListNo原创 2022-05-07 09:55:25 · 284 阅读 · 0 评论 -
LeetCode876. 链表的中间结点
给定一个头结点为 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。示例 1:输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返回了一个 ListNode 类型的对象 ans,这样:ans.val = 3, ans.next.val = 4, ans.next.next.val = 5, 以及 ans.next.next.next = NU原创 2022-05-06 19:20:54 · 63 阅读 · 0 评论 -
LeetCode_206反转链表
反转链表给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。示例 1:输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]示例 2:输入:head = [1,2]输出:[2,1]示例 3:输入:head = []输出:[]完整代码如下:class Solution { public ListNode reverseList(ListNode head) { if(head == null){ re.原创 2022-05-06 18:28:50 · 392 阅读 · 0 评论 -
LeetCode_203移除链表元素
移除链表元素给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。示例 1:输入:head = [1,2,6,3,4,5,6], val = 6输出:[1,2,3,4,5]示例 2:输入:head = [], val = 1输出:[]示例 3:输入:head = [7,7,7,7], val = 7输出:[]易出问题代码如下:public class Solution { .原创 2022-05-06 13:26:33 · 233 阅读 · 0 评论 -
LeetCode58.最后一个单词的长度
给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。示例 1:输入:s = "Hello World"输出:5解释:最后一个单词是“World”,长度为5。示例 2:输入:s = " fly me to the moon "输出:4解释:最后一个单词是“moon”,长度为4。示例 3:输入:s = "luffy is still joyboy"输出:6解释:原创 2022-04-30 12:47:30 · 154 阅读 · 0 评论 -
LeetCode118.杨辉三角
给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。代码如下: public List<List<Integer>> generate(int numRows) { if(numRows <= 0){ return new ArrayList<>(); } //result用来表示最终结果,这个result中就原创 2022-04-29 21:30:36 · 53 阅读 · 0 评论 -
LeetCode27. 移除元素
题目描述:给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:输入:nums = [3,2,2,3], val = 3输出:2, nums = [2,2]解释:函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。例如,函数返回的原创 2022-04-14 16:33:13 · 43 阅读 · 0 评论 -
LeetCode1672.最富有客户的资产总量
题目描述:给你一个 m x n 的整数网格 accounts ,其中 accounts[i][j] 是第 i 位客户在第 j 家银行托管的资产数量。返回最富有客户所拥有的 资产总量 。客户的 资产总量 就是他们在各家银行托管的资产数量之和。最富有客户就是 资产总量 最大的客户。例如:输入:accounts = [[1,2,3],[3,2,1]]输出:6解释:第 1 位客户的资产总量 = 1 + 2 + 3 = 6第 2 位客户的资产总量 = 3 + 2 + 1 = 6原创 2022-04-14 13:10:56 · 64 阅读 · 0 评论 -
LeetCode1. 两数之和
题目描述:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例 1:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。示例 2:输入:nums = [3,2,4], tar原创 2022-04-14 13:49:10 · 46 阅读 · 0 评论