- 博客(31)
- 收藏
- 关注
原创 LCP07
LCP07小朋友 A 在和 ta 的小伙伴们玩传信息游戏,游戏规则如下:有 n 名玩家,所有玩家编号分别为 0 ~ n-1,其中小朋友 A 的编号为 0每个玩家都有固定的若干个可传信息的其他玩家(也可能没有)。传信息的关系是单向的(比如 A 可以向 B 传信息,但 B 不能向 A 传信息)。每轮信息必须需要传递给另一个人,且信息可重复经过同一个人给定总玩家数 n,以及按 [玩家编号,对应可传递玩家编号] 关系组成的二维数组 relation。返回信息从小 A (编号 0 ) 经过 k 轮传递到编号
2021-07-03 22:26:38
68
原创 leetcode 143. 重排链表
143. 重排链表给定一个单链表 L:L0→L1→…→Ln-1→Ln ,将其重新排列后变为: L0→Ln→L1→Ln-1→L2→Ln-2→…你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。143. 重排链表示例 1:给定链表 1->2->3->4, 重新排列为 1->4->2->3.示例 2:给定链表 1->2->3->4->5, 重新排列为 1->5->2->4->3.利用递归,走
2021-06-02 17:35:02
114
原创 leetcode 129. 求根节点到叶节点数字之和
129. 求根节点到叶节点数字之和129. 求根节点到叶节点数字之和给你一个二叉树的根节点 root ,树中每个节点都存放有一个 0 到 9 之间的数字。每条从根节点到叶节点的路径都代表一个数字:例如,从根节点到叶节点的路径 1 -> 2 -> 3 表示数字 123 。计算从根节点到叶节点生成的 所有数字之和 。叶节点 是指没有子节点的节点。示例 1:输入:root = [1,2,3]输出:25解释:从根到叶子节点路径 1->2 代表数字 12从根到叶子节点路径
2021-05-23 16:07:14
121
原创 leetcode 125. 验证回文串(大小写转换)
125. 验证回文串125. 验证回文串给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: “A man, a plan, a canal: Panama”输出: true示例 2:输入: “race a car”输出: false这个题本来没什么写的,我用的是s.toLowerCase()花了5ms通过但是我翻评论区的时候看到了这个 大小写转换,用了这个方法之后,通过时间变成3ms
2021-05-23 15:36:16
116
原创 leetcode114. 二叉树展开为链表
leetcode114. 二叉树展开为链表leetcode114. 二叉树展开为链表给你二叉树的根结点 root ,请你将它展开为一个单链表:展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。展开后的单链表应该与二叉树 先序遍历 顺序相同。示例 1:输入:root = [1,2,5,3,4,null,6]输出:[1,null,2,null,3,null,4,null,5,null,6]示例 2:输入:root
2021-05-19 20:30:42
56
原创 leetcode 113. 路径总和 II
leetcode 113. 路径总和 IIleetcode 113. 路径总和 II示例 1:输入:root = [5,4,8,11,null,13,4,7,2,null,null,null,1], targetSum = 22输出:[[5,4,11,2],[5,8,4,5]]示例 2:输入:root = [1,2,3], targetSum = 5输出:[]示例 3:输入:root = [1,2], targetSum = 0输出:[]提示:树中节点的数目在范围
2021-05-19 20:17:00
118
原创 leetcode 112. 路径总和
112. 路径总和给你二叉树的根节点 root 和一个表示目标和的整数 targetSum ,判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。叶子节点 是指没有子节点的节点。leetcode 112. 路径总和示例 1:输入:root = [5,4,8,11,null,13,4,7,2,null,null,null,1], targetSum = 22输出:true示例 2:输入:root = [1,2,3], targetS
2021-05-19 20:09:44
68
原创 leetcode106. 从中序与后序遍历序列构造二叉树
leetcode106. 从中序与后序遍历序列构造二叉树leetcode106. 从中序与后序遍历序列构造二叉树根据一棵树的中序遍历与后序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出中序遍历 inorder = [9,3,15,20,7]后序遍历 postorder = [9,15,7,20,3]返回如下的二叉树:思路跟前一题一样,就最后的判断变了下,没什么难度class Solution { public TreeNode buildTree(int
2021-05-19 20:04:42
48
原创 leetcode105. 从前序与中序遍历序列构造二叉树
leetcode105. 从前序与中序遍历序列构造二叉树leetcode105. 从前序与中序遍历序列构造二叉树根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树:这道题我比较喜欢,因为平时对于知道两种顺序再对树进行构造,我只停留在手写,把它实体化成代码花了我不少功夫,主要是我对于边界问题的不敏感,导致右子树的边界判断
2021-05-18 15:40:41
76
原创 leetccode 103. 二叉树的锯齿形层序遍历
103. 二叉树的锯齿形层序遍历leetccode 103. 二叉树的锯齿形层序遍历给定一个二叉树,返回其节点值的锯齿形层序遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。例如:给定二叉树 [3,9,20,null,null,15,7],返回锯齿形层序遍历如下:[[3],[20,9],[15,7]]我的方法并不高明,根据flag判断该正加入还是反加入,写了俩个类似的代码块,评论区大佬的方法是判断奇偶层数,在加入的时候就根据这个加在前或者后clas
2021-05-18 15:30:22
103
原创 leetcode102. 二叉树的层序遍历
二叉树的层序遍历leetcode102.二叉树的层序遍历给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。示例:二叉树:[3,9,20,null,null,15,7],返回其层序遍历结果:[[3],[9,20],[15,7]]res为结果列表,l为每层临时数据表,temp为每层临时节点表。把第一层放入list,读取list,把第二层子节点放入temp,val放入llist为空结束读取,list等于temp,res把l添加进来。cl
2021-05-18 15:22:48
51
原创 leetcode100. 相同的树
相同的树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提示:两棵树上的节点数目都在范围 [0, 100]
2021-05-18 15:10:50
46
原创 leetcode 90. 子集 II
子集 II给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。leetcode 90示例 1:输入:nums = [1,2,3]输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]示例 2:输入:nums = [0]输出:[[],[0]]提示:1 <= nums.length <= 10-10 <= nums[i] <
2021-05-12 20:21:46
73
原创 leetcode 82. 删除排序链表中的重复元素 II
82. 删除排序链表中的重复元素 II存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除链表中所有存在数字重复情况的节点,只保留原始链表中 没有重复出现 的数字。返回同样按升序排列的结果链表。示例 1:输入:head = [1,2,3,3,4,4,5]输出:[1,2,5]示例 2:输入:head = [1,1,1,2,3]输出:[2,3]提示:链表中节点数目在范围 [0, 300] 内-100 <= Node.val <= 100题目数据保证
2021-05-12 19:11:57
41
原创 leetcode 78. 子集
子集leetcode 78给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。示例 1:输入:nums = [1,2,3]输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]示例 2:输入:nums = [0]输出:[[],[0]]提示:1 <= nums.length <= 10-10 <= nums[i] <=
2021-05-10 16:12:56
82
原创 leetcode 77. 组合
组合给定两个整数 n 和 k,返回 1 … n 中所有可能的 k 个数的组合。leetcode 77图一图二示例:输入: n = 4, k = 2输出: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ]经典回溯法,本来没什么好写的,但是我发现加了疑惑点那句if就能从图二变成图一,空间和速度都好了一点,可是while(i <= n)和if(i > n)没有什么区别吧,这是为什么呢?class Solutio
2021-05-09 15:40:44
52
原创 leetcode 75. 颜色分类
颜色分类给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。leetcode 75示例 1:输入:nums = [2,0,2,1,1,0]输出:[0,0,1,1,2,2]示例 2:输入:nums = [2,0,1]输出:[0,1,2]示例 3:输入:nums = [0]输出:[0]示例 4:输入:nums = [1]输出
2021-05-08 22:27:18
130
原创 leetcode74. 搜索二维矩阵
搜索二维矩阵编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:每行中的整数从左到右按升序排列。每行的第一个整数大于前一行的最后一个整数。leetcode74示例 1:输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 3输出:true示例 2:输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 13输出
2021-05-08 22:16:03
62
原创 leetcode 59. 螺旋矩阵 II
螺旋矩阵 II给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。leetcode59示例 1:输入:n = 3输出:[[1,2,3],[8,9,4],[7,6,5]]示例 2:输入:n = 1输出:[[1]]提示:1 <= n <= 20这道题和螺旋矩阵是一样的,设置up为0,down为n-1,left为0,right为n-1,都是从上面的left走到right处,此时矩阵最上
2021-05-08 22:07:55
53
原创 leetcode 73. 矩阵置零
矩阵置零给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。leetcode 73进阶:一个直观的解决方案是使用 O(mn) 的额外空间,但这并不是一个好的解决方案。一个简单的改进方案是使用 O(m + n) 的额外空间,但这仍然不是最好的解决方案。你能想出一个仅使用常量空间的解决方案吗?示例 1:输入:matrix = [[1,1,1],[1,0,1],[1,1,1]]输出:[[1,0,1],[0,0,0],[1,0,1]
2021-05-07 22:28:54
92
原创 leetcode 67. 二进制求和
二进制求和给你两个二进制字符串,返回它们的和(用二进制表示)。输入为 非空 字符串且只包含数字 1 和 0。leetcode67示例 1:输入: a = “11”, b = “1”输出: “100”示例 2:输入: a = “1010”, b = “1011”输出: “10101”提示:每个字符串仅由字符 ‘0’ 或 ‘1’ 组成。1 <= a.length, b.length <= 10^4字符串如果不是 “0” ,就都不含前导零。简单题,从后往前走,因
2021-05-06 21:57:54
43
原创 leetcode 57 插入区间
插入区间给你一个 无重叠的 ,按照区间起始端点排序的区间列表。在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。示例 1:输入:intervals = [[1,3],[6,9]], newInterval = [2,5]输出:[[1,5],[6,9]]示例 2:输入:intervals = [[1,2],[3,5],[6,7],[8,10],[12,16]], newInterval = [4,8]输出:[[1,2],[3,10],[1
2021-05-06 21:26:24
80
原创 leetcode 93 复原 IP 地址
复原 IP 地址leetcode 93给定一个只包含数字的字符串,用以表示一个 IP 地址,返回所有可能从 s 获得的 有效 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 地址。示例
2021-05-04 15:03:19
204
原创 leetcode 7 整数反转
整数反转leetcode 7给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [−2e31, 2e31 − 1] ,就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)。示例 1:输入:x = 123输出:321示例 2:输入:x = -123输出:-321示例 3:输入:x = 120输出:21示例 4:输入:x = 0输出:0很简单的一道leetcode题,题目并不难
2021-05-04 14:54:03
50
原创 58. 最后一个单词的长度
最后一个单词的长度给你一个字符串 s,由若干单词组成,单词之间用空格隔开。返回字符串中最后一个单词的长度。如果不存在最后一个单词,请返回 0 。单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。示例 1:输入:s = “Hello World”输出:5示例 2:输入:s = " "输出:0提示:1 <= s.length <= 10e4s 仅有英文字母和空格 ’ ’ 组成简单题随便写写就行了,大佬是直接反向读取,1msclass Solution
2021-05-02 20:24:33
49
原创 leetcode 56 合并区间
合并区间以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。leetcode54LinkedListArrayList示例 1:输入:intervals = [[1,3],[2,6],[8,10],[15,18]]输出:[[1,6],[8,10],[15,18]]解释:区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1
2021-05-02 15:03:31
70
原创 leetcode 61旋转链表
旋转链表给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。leetcode61示例 1:输入:head = [1,2,3,4,5], k = 2输出:[4,5,1,2,3]示例 2:输入:head = [0,1,2], k = 4输出:[2,0,1]提示:链表中节点的数目在范围 [0, 500] 内-100 <= Node.val <= 1000 <= k <= 2 * 109这道题本质上不难,但是由于我很少写链表
2021-05-01 22:51:34
90
原创 leetcodee55跳跃游戏
跳跃游戏跳跃游戏2给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标。当时做的时候就考虑能不能用回溯法做,现在看来貌似是可以的就是慢一点先走最远距离,不行就 距离-1 如果有一个能到达最后一个数,就直接if(flag)跳出来class Solution { public boolean canJump(int[] nums) { return backTrace(num
2021-05-01 14:52:48
52
原创 leetcode54
螺旋矩阵给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。示例 1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]示例 2:输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]输出:[1,2,3,4,8,12,11,10,9,5,6,7]提示:m == matrix.lengthn == matrix[i].length
2021-05-01 13:19:43
44
原创 leetcode64
一级标题leetcode64执行用时:3 ms, 在所有 Java 提交中击败了88.42%的用户内存消耗:40.9 MB, 在所有 Java 提交中击败了92.20%的用户给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例 1:输入:grid = [[1,3,1],[1,5,1],[4,2,1]]输出:7解释:因为路径 1→3→1→1→1 的总和最小。示例 2:输入:
2021-04-30 22:00:23
115
2
原创 leetcode45
跳跃游戏 II 给定一个非负整数数组,你最初位于数组的第一个位置。给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。假设你总是可以到达数组的最后一个位置。执行用时: 0 ms , 在所有 Java 提交中击败了100.00% 的用户内存消耗:35.8 MB , 在所有 Java 提交中击败了 71.30%的用户示例 1:输入: [2,3,1,1,4]输出: 2解释: 跳到最后一个位
2021-04-30 16:55:31
172
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人