- 博客(41)
- 收藏
- 关注
原创 221. 最大正方形
221. 最大正方形难度中等878在一个由 '0' 和 '1' 组成的二维矩阵内,找到只包含 '1' 的最大正方形,并返回其面积。示例 1:输入:matrix = [["1","0","1","0","0"],["1","0","1","1","1"],["1","1","1","1","1"],["1","0","0","1","0"]]输出:4示例 2:输入:matrix = [["0","1"],["1","0"]]输出:1示例 3:输入:matrix = [["0"]]
2021-09-26 15:55:12 207
原创 208. 实现 Trie (前缀树)
208. 实现 Trie (前缀树)Trie(发音类似 “try”)或者说 前缀树 是一种树形数据结构,用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景,例如自动补完和拼写检查。请你实现 Trie 类:Trie() 初始化前缀树对象。void insert(String word) 向前缀树中插入字符串 word 。boolean search(String word) 如果字符串 word 在前缀树中,返回 true(即,在检索之前已经插入);否则,返回 false 。
2021-09-24 20:16:49 195
原创 2021-09-17
54. 螺旋矩阵给你一个 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].len
2021-09-17 23:05:44 222
原创 38. 外观数列
38. 外观数列给定一个正整数 n ,输出外观数列的第 n 项。「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。你可以将其视作是由递归公式定义的数字字符串序列:countAndSay(1) = "1"countAndSay(n) 是对 countAndSay(n-1) 的描述,然后转换成另一个数字字符串。前五项如下:1. 12. 113. 214. 12115. 111221第一项是数字 1 描述前一项,这
2021-09-13 21:04:51 105
原创 二叉搜索树中第K小的元素
230. 二叉搜索树中第K小的元素难度中等445给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 个最小元素(从 1 开始计数)。示例 1:输入:root = [3,1,4,null,2], k = 1输出:1示例 2:输入:root = [5,3,6,2,4,null,null,1], k = 3输出:3提示:树中的节点数为 n 。1 <= k <= n <= 1040 <= Node.val <= 1
2021-09-12 22:10:11 93
原创 134. 加油站
134. 加油站在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升。你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。如果你可以绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1。说明:如果题目有解,该答案即为唯一答案。输入数组均为非空数组,且长度相同。输入数组中的元素均为非负数。示例 1:输入: gas = [1,2,3,4,5]cost = [3,4
2021-09-11 21:47:42 77
原创 1894. 找到需要补充粉笔的学生编号
1894. 找到需要补充粉笔的学生编号一个班级里有 n 个学生,编号为 0 到 n - 1 。每个学生会依次回答问题,编号为 0 的学生先回答,然后是编号为 1 的学生,以此类推,直到编号为 n - 1 的学生,然后老师会重复这个过程,重新从编号为 0 的学生开始回答问题。给你一个长度为 n 且下标从 0 开始的整数数组 chalk 和一个整数 k 。一开始粉笔盒里总共有 k 支粉笔。当编号为 i 的学生回答问题时,他会消耗 chalk[i] 支粉笔。如果剩余粉笔数量 严格小于 chalk[i] ,那么
2021-09-10 22:30:36 87
原创 68. 文本左右对齐
68. 文本左右对齐给定一个单词数组和一个长度 maxWidth,重新排版单词,使其成为每行恰好有 maxWidth 个字符,且左右两端对齐的文本。你应该使用“贪心算法”来放置给定的单词;也就是说,尽可能多地往每行中放置单词。必要时可用空格 ' ' 填充,使得每行恰好有 maxWidth 个字符。要求尽可能均匀分配单词间的空格数量。如果某一行单词间的空格不能均匀分配,则左侧放置的空格数要多于右侧的空格数。文本的最后一行应为左对齐,且单词之间不插入额外的空格。说明:单词是指由非空格字符组成的字符
2021-09-09 21:24:32 122
原创 2021-09-08
131. 分割回文串给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。回文串 是正着读和反着读都一样的字符串。示例 1:输入:s = "aab"输出:[["a","a","b"],["aa","b"]]示例 2:输入:s = "a"输出:[["a"]]提示:1 <= s.length <= 16s 仅由小写英文字母组成回溯遍历字符串,首先一个值标记最左边的起点,然后找回文字符串,如果从起点开始的某个字符串是回
2021-09-08 21:04:10 129
原创 461. 汉明距离
461. 汉明距离两个整数之间的 汉明距离 指的是这两个数字对应二进制位不同的位置的数目。给你两个整数 x 和 y,计算并返回它们之间的汉明距离。示例 1:输入:x = 1, y = 4输出:2解释:1 (0 0 0 1)4 (0 1 0 0) ↑ ↑上面的箭头指出了对应二进制位不同的位置。示例 2:输入:x = 3, y = 1输出:1提示:0 <= x, y <= 231 - 1/** * @param {number} x
2021-09-07 22:15:20 85
原创 LCP 01. 猜数字
LCP 01. 猜数字小A 和 小B 在玩猜数字。小B 每次从 1, 2, 3 中随机选择一个,小A 每次也从 1, 2, 3 中选择一个猜。他们一共进行三次这个游戏,请返回 小A 猜对了几次?输入的guess数组为 小A 每次的猜测,answer数组为 小B 每次的选择。guess和answer的长度都等于3。示例 1:输入:guess = [1,2,3], answer = [1,2,3]输出:3解释:小A 每次都猜对了。示例 2:输入:guess = [2,2,3], answer =
2021-09-02 23:54:10 79
原创 165. 比较版本号
比较版本号给你两个版本号 version1 和 version2 ,请你比较它们。版本号由一个或多个修订号组成,各修订号由一个 ‘.’ 连接。每个修订号由 多位数字 组成,可能包含 前导零 。每个版本号至少包含一个字符。修订号从左到右编号,下标从 0 开始,最左边的修订号下标为 0 ,下一个修订号下标为 1 ,以此类推。例如,2.5.33 和 0.1 都是有效的版本号。比较版本号时,请按从左到右的顺序依次比较它们的修订号。比较修订号时,只需比较 忽略任何前导零后的整数值 。也就是说,修订号 1 和.
2021-09-01 22:26:51 122
原创 169. 多数元素
多数元素给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例 1:输入:[3,2,3]输出:3示例 2:输入:[2,2,1,1,1,2,2]输出:2进阶:尝试设计时间复杂度为 O(n)、空间复杂度为 O(1) 的算法解决此问题。投票算法设置两个变量,一个变量设置选中的元素,另一个变量设置为次数。遍历整个数组,如果是跟选中的元素相同,次数加一,如果不是和选的元素相同.
2021-08-31 23:33:51 67
原创 118. 杨辉三角
杨辉三角给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。示例 1:输入: numRows = 5输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]示例 2:输入: numRows = 1输出: [[1]]提示:1 <= numRows <= 30/** * @param {number} numRows * @return {number[][]}.
2021-08-30 23:50:57 57
原创 344. 反转字符串
反转字符串编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。示例 1:输入:[“h”,“e”,“l”,“l”,“o”]输出:[“o”,“l”,“l”,“e”,“h”]示例 2:输入:[“H”,“a”,“n”,“n”,“a”,“h”]输出:[“h”,“a”,“n”,“n”,“a”,“H”.
2021-08-29 23:54:25 286
原创 9. 回文数
给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。示例 1:输入:x = 121输出:true示例 2:输入:x = -121输出:false解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入:x = 10输出:false解释:从右向左读, 为 01 。因此它不是一个回文数。示
2021-08-28 23:50:36 91
原创 50. Pow(x, n)
Pow(x, n)实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn)。示例 1:输入:x = 2.00000, n = 10输出:1024.00000示例 2:输入:x = 2.10000, n = 3输出:9.26100示例 3:输入:x = 2.00000, n = -2输出:0.25000解释:2-2 = 1/22 = 1/4 = 0.25提示:-100.0 < x < 100.0-231 <= n <= 231-1-104 .
2021-08-27 22:40:42 70
原创 881. 救生艇
救生艇第 i 个人的体重为 people[i],每艘船可以承载的最大重量为 limit。每艘船最多可同时载两人,但条件是这些人的重量之和最多为 limit。返回载到每一个人所需的最小船数。(保证每个人都能被船载)。示例 1:输入:people = [1,2], limit = 3输出:1解释:1 艘船载 (1, 2)示例 2:输入:people = [3,2,2,1], limit = 3输出:3解释:3 艘船分别载 (1, 2), (2) 和 (3)示例 3:输入:peopl.
2021-08-26 23:36:56 90
原创 第18题 力扣LeetCode 热题 HOT 100(39. 单词拆分)
第18题 力扣LeetCode 热题 HOT 100(39. 单词拆分)给定一个非空字符串 s 和一个包含非空单词的列表 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词。你可以假设字典中没有重复的单词。示例 1:输入: s = "leetcode", wordDict = ["leet", "code"]输出: true解释: 返回 true 因为 "leetcode" 可以被拆分成 "leet code"。示例 2
2021-08-25 23:52:04 187
原创 剑指 Offer 19. 正则表达式匹配
剑指 Offer 19. 正则表达式匹配难度困难269请实现一个函数用来匹配包含'. '和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(含0次)。在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但与"aa.a"和"ab*a"均不匹配。示例 1:输入:s = "aa"p = "a"输出: false解释: "a" 无法匹配 "aa" 整个字符串。示例 2:输入:s = "a
2021-08-24 23:26:59 63
原创 1646. 获取生成数组中的最大值
1646. 获取生成数组中的最大值给你一个整数 n 。按下述规则生成一个长度为 n + 1 的数组 nums :nums[0] = 0nums[1] = 1当 2 <= 2 * i <= n 时,nums[2 * i] = nums[i]当 2 <= 2 * i + 1 <= n 时,nums[2 * i + 1] = nums[i] + nums[i + 1]返回生成数组 nums 中的 最大 值。 示例 1:输入:n = 7输出:3解释:根据规则:
2021-08-23 23:35:16 115
原创 406. 根据身高重建队列
根据身高重建队列假设有打乱顺序的一群人站成一个队列,数组 people 表示队列中一些人的属性(不一定按顺序)。每个 people[i] = [hi, ki] 表示第 i 个人的身高为 hi ,前面 正好 有 ki 个身高大于或等于 hi 的人。请你重新构造并返回输入数组 people 所表示的队列。返回的队列应该格式化为数组 queue ,其中 queue[j] = [hj, kj] 是队列中第 j 个人的属性(queue[0] 是排在队列前面的人)。示例 1:输入:people = [[7,.
2021-08-22 23:33:31 71
原创 第17题 力扣LeetCode 剑指offer(30. 包含min函数的栈)
第17题 力扣LeetCode 剑指offer(30. 包含min函数的栈)定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0);minStack.push(-3);minStack.min(); --> 返回 -3.minStack.pop()
2021-08-21 22:41:01 91
原创 第16题 力扣LeetCode 剑指offer(142. 环形链表 II)
第16题 力扣LeetCode 剑指offer(142. 环形链表 II)给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意,pos 仅仅是用于标识环的情况,并不会作为参数传递到函数中。**说明:**不允许修改给定的链表。进阶:你是否可以使用 O(1) 空间解决此题?示例 1:输入:head = [3,2,0,-4
2021-08-20 23:39:10 134
原创 第15题 力扣LeetCode 剑指offer(62. 圆圈中最后剩下的数字)
第15题 力扣LeetCode 剑指offer(62. 圆圈中最后剩下的数字)题目0,1,···,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字(删除后从下一个数字开始计数)。求出这个圆圈里剩下的最后一个数字。例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数字依次是2、0、4、1,因此最后剩下的数字是3。示例 1:输入: n = 5, m = 3输出: 3示例 2:输入: n = 10, m = 17输出: 2
2021-08-19 22:47:36 94
原创 第14题 力扣LeetCode 热题 HOT 100(560. 和为K的子数组)
第14题 力扣LeetCode 热题 HOT 100(560. 和为K的子数组)题目给定一个整数数组和一个整数 **k,**你需要找到该数组中和为 k 的连续的子数组的个数。示例 1 :输入:nums = [1,1,1], k = 2输出: 2 , [1,1] 与 [1,1] 为两种不同的情况。说明 :数组的长度为 [1, 20,000]。数组中元素的范围是 [-1000, 1000] ,且整数 k 的范围是 [-1e7, 1e7]。题解首先想到的当然是两重for循环,遍历得到两个
2021-08-18 23:29:49 133
原创 第13题 力扣LeetCode 热题 HOT 100(105. 从前序与中序遍历序列构造二叉树)
第13题 力扣LeetCode 热题 HOT 100(105. 从前序与中序遍历序列构造二叉树)题目给定一棵树的前序遍历 preorder 与中序遍历 inorder。请构造二叉树并返回其根节点。示例 1:Input: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7]Output: [3,9,20,null,null,15,7]示例 2:Input: preorder = [-1], inorder = [-1]Output: [-1]
2021-08-17 17:00:13 158
原创 第12题 力扣LeetCode 热题 HOT 100(543. 二叉树的直径)
第12题 力扣LeetCode 热题 HOT 100(543. 二叉树的直径)题目给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。示例 :给定二叉树 1 / \ 2 3 / \ 4 5 返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。**注意:**两结点之间的路径长度是以它们之间边的数
2021-08-16 22:20:50 178
原创 第11题 每日一题(576. 出界的路径树)
第11题 每日一题(576. 出界的路径树)题目给你一个大小为 m x n 的网格和一个球。球的起始坐标为 [startRow, startColumn] 。你可以将球移到在四个方向上相邻的单元格内(可以穿过网格边界到达网格之外)。你 最多 可以移动 maxMove 次球。给你五个整数 m、n、maxMove、startRow 以及 startColumn ,找出并返回可以将球移出边界的路径数量。因为答案可能非常大,返回对 109 + 7 取余 后的结果。示例 1:输入:m = 2, n = 2
2021-08-15 21:40:50 54
原创 第10题 力扣LeetCode 热题 HOT 100(437. 路径总和)
第10题 力扣LeetCode 热题 HOT 100(437. 路径总和)给定一个二叉树的根节点 root ,和一个整数 targetSum ,求该二叉树里节点值之和等于 targetSum 的 路径 的数目。路径 不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。示例1:输入:root = [10,5,-3,3,2,null,11,3,-2,null,1], targetSum = 8输出:3示例 2:输入:root = [5,4,8,11,nu
2021-08-14 22:54:41 229
原创 第9题 力扣LeetCode 热题 HOT 100(2. 两数相加)
第9题 力扣LeetCode 热题 HOT 100(2. 两数相加)给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例1:输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807.示例 2:输入:l1 = [0], l2 = [0]输出:[0]
2021-08-14 22:22:59 99
原创 第8题 力扣LeetCode 热题 HOT 100(3. 无重复字符的最长子串)
第8题 力扣LeetCode 热题 HOT 100(3. 无重复字符的最长子串)题目难度中等5914收藏分享切换为英文接收动态反馈给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: s = "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: s = "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: s = "pwwkew"输
2021-08-13 22:03:30 175
原创 第7题 力扣LeetCode 热题 HOT 100(96.不同的二叉搜索树)
第7题 力扣LeetCode 热题 HOT 100(96.不同的二叉搜索树)题目给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。示例 1:输入:n = 3输出:5示例 2:输入:n = 1输出:1提示:1 <= n <= 19题解二叉搜索树,即左子树中的所有值小于根节点的值,右子树中的所有值大于根节点的值。以n = 3 为例当根节点值为1 时,满足二叉搜索树的情况下左子树节点数
2021-08-12 23:10:16 148
原创 第6题 力扣LeetCode 热题 HOT 100(101. 对称二叉树)
第6题 力扣LeetCode 热题 HOT 100(101. 对称二叉树)题目给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \3 4 4 3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3题解有两种解法,迭代和递归。递归解法,以根节点的左右子树为线索,开始往下走,往下走的
2021-08-11 01:32:52 161
原创 第5题 力扣LeetCode 热题 HOT 100(48. 旋转图像)
第5题 力扣LeetCode 热题 HOT 100(48. 旋转图像)题目给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。你必须在** 原地** 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。示例一:1 2 3 7 4 14 5 6 ===》 8 5 27 8 9 9 6 3题解找规律题,分析可得,可先将矩阵按对线对称交换元
2021-08-11 00:46:33 261
原创 第4题 力扣LeetCode 热题 HOT 100(34. 在排序数组中查找元素的第一个和最后一个位置)
第4题 力扣LeetCode 热题 HOT 100(34. 在排序数组中查找元素的第一个和最后一个位置)题目给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。进阶:你可以设计并实现时间复杂度为 O(log n) 的算法解决此问题吗?示例 1:输入:nums = [5,7,7,8,8,10], target = 8输出:[3,4]示例 2:输入:nums =
2021-08-10 14:46:03 143
原创 第3题 力扣LeetCode 热题 HOT 100(394. 字符串解码)
第3题 力扣LeetCode 热题 HOT 100(394. 字符串解码)题目394. 字符串解码难度中等841收藏分享切换为英文接收动态反馈给定一个经过编码的字符串,返回它解码后的字符串。编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数 k ,
2021-08-09 23:54:52 279
原创 第2题 力扣LeetCode 热题 HOT 100 (581. 最短无序连续子数组)
第2题 力扣LeetCode 热题 HOT 100 (581. 最短无序连续子数组)题目给你一个整数数组 nums ,你需要找出一个 连续子数组 ,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序。请你找出符合题意的 最短 子数组,并输出它的长度。示例 1:输入:nums = [2,6,4,8,10,9,15]输出:5解释:你只需要对 [6, 4, 8, 10, 9] 进行升序排序,那么整个表都会变为升序排序。示例 2:输入:nums = [1,2,3,4]输出:0示例
2021-08-09 13:24:07 207
原创 第1题 力扣LeetCode 热题 HOT 100 (56. 合并区间)
第1题 力扣LeetCode 热题 HOT 100 (56. 合并区间)题目:以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。示例 1:输入:intervals = [[1,3],[2,6],[8,10],[15,18]]输出:[[1,6],[8,10],[15,18]]解释:区间 [1,3] 和 [2,6] 重叠, 将它们合并为
2021-08-09 10:11:44 284
原创 服务器上git clone github项目卡住
git clone 卡我在服务器上克隆我github仓库时,卡住了,网上找了好几个方法,都不行,然后我想到了试试克隆我coding仓库看看速度,秒下载,所以我先把我github上的仓库导入coding,然后再克隆coding的仓库...
2021-03-16 20:19:58 1423
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人