05 2025 档案

摘要:输入一棵二叉树的根结点,判断该树是不是平衡二叉树。 如果某二叉树中任意结点的左右子树的深度相差不超过 1,那么它就是一棵平衡二叉树。 注意: 规定空树也是一棵平衡二叉树。 数据范围: 树中节点数量 [0,500]。 样例: 输入:二叉树[5,7,11,null,null,12,9,null,null 阅读全文
posted @ 2025-05-30 14:48 回忆、少年 阅读(15) 评论(0) 推荐(0)
摘要:输入一棵二叉树的根结点,求该树的深度。 从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 数据范围: 树中节点数量 [0,500]。 样例: 输入:二叉树[8, 12, 2, null, null, 6, 4, null, null, null, null] 阅读全文
posted @ 2025-05-30 13:23 回忆、少年 阅读(63) 评论(0) 推荐(0)
摘要:给定一棵二叉搜索树,请找出其中的第 k 小的结点。 你可以假设树和 k 都存在,并且 1≤k≤ 树的总结点数。 数据范围: 树中节点数量 [1,500]。 样例: 输入:root = [2, 1, 3, null, null, null, null] ,k = 3 输出:3 代码: /** * De 阅读全文
posted @ 2025-05-30 13:11 回忆、少年 阅读(13) 评论(0) 推荐(0)
摘要:假设一个单调递增的数组里的每个元素都是整数并且是唯一的。 请编程实现一个函数找出数组中任意一个数值等于其下标的元素。 例如,在数组 [−3,−1,1,3,5] 中,数字 3 和它的下标相等。 数据范围: 数组长度 [1,100]。 样例: 输入:[-3, -1, 1, 3, 5] 输出:3 注意: 阅读全文
posted @ 2025-05-30 12:57 回忆、少年 阅读(19) 评论(0) 推荐(0)
摘要:一个长度为 n−1 的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围 0 到 n−1 之内。 在范围 0 到 n−1 的 n 个数字中有且只有一个数字不在该数组中,请找出这个数字。 数据范围: 1≤n≤1000 样例: 输入:[0,1,2,4] 输出:3 代码: class Solutio 阅读全文
posted @ 2025-05-30 12:47 回忆、少年 阅读(27) 评论(0) 推荐(0)
摘要:统计一个数字在排序数组中出现的次数。 例如输入排序数组 [1,2,3,3,3,3,4,5] 和数字 3,由于 3 在这个数组中出现了 4 次,因此输出 4。 数据范围: 数组长度 [0,1000]。 样例: 输入:[1, 2, 3, 3, 3, 3, 4, 5], 3 输出:4 代码: class 阅读全文
posted @ 2025-05-30 10:47 回忆、少年 阅读(18) 评论(0) 推荐(0)
摘要:输入两个链表,找出它们的第一个公共结点。 当不存在公共节点时,返回空节点。 数据范围: 链表长度 [1,30000]。 保证两个链表不完全相同,即两链表的头结点不相同。 样例: 给出两个链表如下所示: 输出第一个公共节点c1 代码: /** * Definition for singly-linke 阅读全文
posted @ 2025-05-30 09:15 回忆、少年 阅读(17) 评论(0) 推荐(0)
摘要:在数组中的两个数字如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。 输入一个数组,求出这个数组中的逆序对的总数。 数据范围: 给定数组的长度 [0,100]。 样例: 输入:[1,2,3,4,5,6,0] 输出:6 代码: class Solution { //记录逆序对数量 int r 阅读全文
posted @ 2025-05-30 09:01 回忆、少年 阅读(12) 评论(0) 推荐(0)
摘要:请实现一个函数用来找出字符流中第一个只出现一次的字符。 例如,当从字符流中只读出前两个字符 go 时,第一个只出现一次的字符是 g。 当从该字符流中读出前六个字符 google 时,第一个只出现一次的字符是 l。 如果当前字符流没有存在出现一次的字符,返回 # 字符。 数据范围: 字符流读入字符数量 阅读全文
posted @ 2025-05-30 08:44 回忆、少年 阅读(21) 评论(0) 推荐(0)
摘要:在字符串中找出第一个只出现一次的字符。 如输入"abaccdeff",则输出b。 如果字符串中不存在只出现一次的字符,返回 # 字符。 数据范围: 输入字符串长度 [0,1000]。 样例: 输入:"abaccdeff" 输出:'b' 代码: class Solution { public char 阅读全文
posted @ 2025-05-29 10:42 回忆、少年 阅读(45) 评论(0) 推荐(0)
摘要:我们把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number)。 例如 6、8 都是丑数,但 14 不是,因为它包含质因子 7。 求第 n 个丑数的值。 数据范围: 1≤n≤1000 样例: 输入:5 输出:5 注意: 习惯上我们把 1 当做第一个丑数。 代码: class Soluti 阅读全文
posted @ 2025-05-29 10:29 回忆、少年 阅读(29) 评论(0) 推荐(0)
摘要:请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。 假设字符串中只包含从 a 到 z 的字符。 数据范围: 输入字符串长度 [0,1000]。 样例: 输入:"abcabc" 输出:3 代码: class Solution { public int longestSubs 阅读全文
posted @ 2025-05-29 10:15 回忆、少年 阅读(23) 评论(0) 推荐(0)
摘要:在一个 m×n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。 你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格直到到达棋盘的右下角。 给定一个棋盘及其上面的礼物,请计算你最多能拿到多少价值的礼物? 注意: m,n>0 m×n≤1350 样例: 输入: [ 阅读全文
posted @ 2025-05-29 10:02 回忆、少年 阅读(17) 评论(0) 推荐(0)
摘要:给定一个数字,我们按照如下规则把它翻译为字符串: 0 翻译成 a,1 翻译成 b,……,11 翻译成 l,……,25 翻译成 z。 一个数字可能有多个翻译。 例如 12258 有 5 种不同的翻译,它们分别是 bccfi、bwfi、bczi、mcfi 和 mzi。 请编程实现一个函数用来计算一个数字 阅读全文
posted @ 2025-05-29 09:48 回忆、少年 阅读(25) 评论(0) 推荐(0)
摘要:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。 例如输入数组 [3,32,321],则打印出这 3 个数字能排成的最小数字 321323。 数据范围: 数组长度 [0,500]。 样例: 输入:[3, 32, 321] 输出:321323 注意: 输出数 阅读全文
posted @ 2025-05-29 09:24 回忆、少年 阅读(11) 评论(0) 推荐(0)
摘要:数字以 0123456789101112131415… 的格式序列化到一个字符序列中。 在这个序列中,第 5 位(从 0 开始计数)是 5,第 13 位是 1,第 19 位是 4,等等。 请写一个函数求任意位对应的数字。 数据范围: 0≤ 输入数字 ≤2147483647 样例: 输入:13 输出: 阅读全文
posted @ 2025-05-29 08:45 回忆、少年 阅读(50) 评论(0) 推荐(0)
摘要:输入一个整数 n,求从 1 到 n 这 n 个整数的十进制表示中 1 出现的次数。 例如输入 12,从 1 到 12 这些整数中包含 “1” 的数字有 1,10,11 和 12,其中 “1” 一共出现了 5 次。 数据范围: 1≤n≤109 样例: 输入: 12 输出: 5 代码: 详细题解地址:h 阅读全文
posted @ 2025-05-28 11:00 回忆、少年 阅读(18) 评论(0) 推荐(0)
摘要:输入一个 非空 整型数组,数组里的数可能为正,也可能为负。 数组中一个或连续的多个整数组成一个子数组。 求所有子数组的和的最大值。 要求时间复杂度为 O(n)。 数据范围: 数组长度 [1,1000]。 数组内元素取值范围 [−200,200]。 样例: 输入:[1, -2, 3, 10, -4, 阅读全文
posted @ 2025-05-28 10:21 回忆、少年 阅读(19) 评论(0) 推荐(0)
摘要:如何得到一个数据流中的中位数? 如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。 如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。 数据范围: 数据流中读入的数据总数 [1,1000]。 样例: 输入:1, 2, 3, 4 输出:1,1.5 阅读全文
posted @ 2025-05-28 10:08 回忆、少年 阅读(23) 评论(0) 推荐(0)
摘要:输入 n 个整数,找出其中最小的 k 个数。 注意: 输出数组内元素请按从小到大顺序排序; 数据范围: 1≤k≤n≤1000 样例: 输入:[1,2,3,4,5,6,7,8] , k=4 输出:[1,2,3,4] 代码: class Solution { public List<Integer> g 阅读全文
posted @ 2025-05-28 09:43 回忆、少年 阅读(14) 评论(0) 推荐(0)
摘要:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 假设数组非空,并且一定存在满足条件的数字。 思考题: 假设要求只能使用 O(n) 的时间和额外 O(1) 的空间,该怎么做呢? 数据范围: 数组长度 [1,1000]。 样例: 输入:[1,2,1,1,3] 输出:1 代码: class 阅读全文
posted @ 2025-05-28 09:22 回忆、少年 阅读(15) 评论(0) 推荐(0)
摘要:输入一组数字(可能包含重复数字),输出其所有的排列方式。 数据范围: 输入数组长度 [0,6]。 数组元素取值范围 [1,10]。 样例: 输入:[1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ] 代码: clas 阅读全文
posted @ 2025-05-28 09:09 回忆、少年 阅读(27) 评论(0) 推荐(0)
摘要:请实现两个函数,分别用来序列化和反序列化二叉树。 您需要确保二叉树可以序列化为字符串,并且可以将此字符串反序列化为原始树结构。 数据范围: 树中节点数量 [0,1000]。 样例: 你可以序列化如下的二叉树 为:"[8, 12, 2, null, null, 6, 4, null, null, nu 阅读全文
posted @ 2025-05-27 11:16 回忆、少年 阅读(18) 评论(0) 推荐(0)
摘要:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。 要求不能创建任何新的结点,只能调整树中结点指针的指向。 注意: 需要返回双向链表最左侧的节点。 例如,输入下图中左边的二叉搜索树,则输出右边的排序双向链表。 数据范围: 树中节点数量 [0,500]。 代码: //4 6 8 10 12 阅读全文
posted @ 2025-05-27 10:29 回忆、少年 阅读(18) 评论(0) 推荐(0)
摘要:请实现一个函数可以复制一个复杂链表。 在复杂链表中,每个结点除了有一个指针指向下一个结点外,还有一个额外的指针指向链表中的任意结点或者null。 注意: 函数结束后原链表要与输入时保持一致。 数据范围: 链表长度 [0,500]。 代码: /** * Definition for singly-li 阅读全文
posted @ 2025-05-27 09:50 回忆、少年 阅读(17) 评论(0) 推荐(0)
摘要:输入一棵二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。 从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。 保证树中结点值均不小于 0。 数据范围: 树中结点的数量 [0,1000]。 样例: 给出二叉树如下所示,并给出num=22。 输出:[[5,4,12,1],[5,6 阅读全文
posted @ 2025-05-27 09:35 回忆、少年 阅读(18) 评论(0) 推荐(0)
摘要:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。 如果是则返回true,否则返回false。 假设输入的数组的任意两个数字都互不相同。 数据范围: 数组长度 [0,1000]。 样例: 输入: [4, 8, 6, 12, 16, 14, 10] 输出: true 代码: class 阅读全文
posted @ 2025-05-27 09:02 回忆、少年 阅读(26) 评论(0) 推荐(0)
摘要:请实现一个函数按照之字形顺序从上向下打印二叉树。 即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。 数据范围: 树中节点的数量 [0,1000]。 样例: 输入如下图所示二叉树[8, 12, 2, null, null, 6, 4, nu 阅读全文
posted @ 2025-05-22 10:46 回忆、少年 阅读(16) 评论(0) 推荐(0)
摘要:从上到下按层打印二叉树,同一层的结点按从左到右的顺序打印,每一层打印到一行。 数据范围: 树中节点的数量 [0,1000]。 样例: 输入如下图所示二叉树[8, 12, 2, null, null, 6, null, 4, null, null, null] 输出:[[8], [12, 2], [6 阅读全文
posted @ 2025-05-22 10:36 回忆、少年 阅读(16) 评论(0) 推荐(0)
摘要:从上往下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印。 数据范围: 树中节点的数量 [0,1000]。 样例: 输入如下图所示二叉树[8, 12, 2, null, null, 6, null, 4, null, null, null] 输出:[8, 12, 2, 6, 4] 代码: 阅读全文
posted @ 2025-05-22 10:21 回忆、少年 阅读(7) 评论(0) 推荐(0)
摘要:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。 假设压入栈的所有数字均不相等。 例如序列 1,2,3,4,5 是某栈的压入顺序,序列 4,5,3,2,1 是该压栈序列对应的一个弹出序列,但 4,3,5,1,2 就不可能是该压栈序列的弹出序列。 注意:若两个序 阅读全文
posted @ 2025-05-22 10:00 回忆、少年 阅读(14) 评论(0) 推荐(0)
摘要:设计一个支持push,pop,top等操作并且可以在O(1)时间内检索出最小元素的堆栈。 push(x)–将元素x插入栈中 pop()–移除栈顶元素 top()–得到栈顶元素 getMin()–得到栈中最小元素 数据范围: 操作命令总数 [0,100]。 样例: MinStack minStack 阅读全文
posted @ 2025-05-22 09:25 回忆、少年 阅读(15) 评论(0) 推荐(0)
摘要:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。 数据范围: 矩阵中元素数量 [0,400]。 样例: 输入: [ [1, 2, 3, 4], [5, 6, 7, 8], [9,10,11,12] ] 输出:[1,2,3,4,8,12,11,10,9,5,6,7] 代码: class 阅读全文
posted @ 2025-05-21 10:58 回忆、少年 阅读(21) 评论(0) 推荐(0)
摘要:请实现一个函数,用来判断一棵二叉树是不是对称的。 如果一棵二叉树和它的镜像一样,那么它是对称的。 数据范围: 树中节点数量 [0,100]。 样例: 如下图所示二叉树[1,2,2,3,4,4,3,null,null,null,null,null,null,null,null]为对称二叉树: 如下图所 阅读全文
posted @ 2025-05-21 10:42 回忆、少年 阅读(16) 评论(0) 推荐(0)
摘要:输入一个二叉树,将它变换为它的镜像。 数据范围: 树中节点数量 [0,100]。 样例: 输入树: [8,6,10,5,7,9,11,null,null,null,null,null,null,null,null] 输出树: [8,10,6,11,9,7,5,null,null,null,null, 阅读全文
posted @ 2025-05-21 10:23 回忆、少年 阅读(12) 评论(0) 推荐(0)
摘要:输入两棵二叉树 A,B,判断 B 是不是 A 的子结构。 我们规定空树不是任何树的子结构。 数据范围: 每棵树的节点数量 [0,1000]。 样例: 树A: 树B: 返回true,因为B是A的子结构 代码: /** * Definition for a binary tree node. * pub 阅读全文
posted @ 2025-05-15 10:49 回忆、少年 阅读(14) 评论(0) 推荐(0)
摘要:输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按照递增排序的。 数据范围: 链表长度 [0,500]。 样例: 输入:1->3->5 , 2->4->5 输出:1->2->3->4->5->5 代码: /** * Definition for singly-linked list. 阅读全文
posted @ 2025-05-15 10:29 回忆、少年 阅读(17) 评论(0) 推荐(0)
摘要:定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点。 思考题: 请同时实现迭代版本和递归版本。 数据范围: 链表长度 [0,30]。 样例: 输入:1->2->3->4->5->NULL 输出:5->4->3->2->1->NULL 代码: 1.迭代版本 /** * Defini 阅读全文
posted @ 2025-05-15 10:16 回忆、少年 阅读(19) 评论(0) 推荐(0)
摘要:给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围: 节点 val 值取值范围 [1,1000]。 节点 val 值各不相同。 链表长度 [0,500]。 样例: 给定如上所示的链表: [1, 2, 3, 4, 5, 6] 2 注意,这里的2表示编号是2的节 阅读全文
posted @ 2025-05-15 09:37 回忆、少年 阅读(8) 评论(0) 推荐(0)
摘要:输入一个链表,输出该链表中倒数第 k 个结点。 注意: k >= 1; 如果 k 大于链表长度,则返回 NULL; 数据范围: 链表长度 [0,30]。 样例: 输入:链表:1->2->3->4->5 ,k=2 输出:4 代码: /** * Definition for singly-linked 阅读全文
posted @ 2025-05-15 09:37 回忆、少年 阅读(9) 评论(0) 推荐(0)
摘要:输入一个整数数组,实现一个函数来调整该数组中数字的顺序。 使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分。 数据范围: 数组长度 [0,100]。 数组内元素取值范围 [0,100]。 样例: 输入:[1,2,3,4,5] 输出: [1,3,5,2,4] 代码: class Solu 阅读全文
posted @ 2025-05-15 09:37 回忆、少年 阅读(21) 评论(0) 推荐(0)
摘要:请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。 例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。 注意: 小数可以没有整数部分,例如.123等于0 阅读全文
posted @ 2025-05-15 09:37 回忆、少年 阅读(22) 评论(0) 推荐(0)
摘要:请实现一个函数用来匹配包括'.'和'*'的正则表达式。 模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。 例如,字符串"aaa"与模式"a.a"和"abaca"匹配,但是与"aa.a"和"ab*a"均不匹配。 数 阅读全文
posted @ 2025-05-14 13:09 回忆、少年 阅读(24) 评论(0) 推荐(0)
摘要:在一个排序的链表中,存在重复的节点,请删除该链表中重复的节点,重复的节点不保留。 数据范围: 链表中节点 val 值取值范围 [0,100]。链表长度 [0,100]。 样例1: 输入:1->2->3->3->4->4->5 输出:1->2->5 样例2: 输入:1->1->1->2->3 输出:2 阅读全文
posted @ 2025-05-14 10:41 回忆、少年 阅读(10) 评论(0) 推荐(0)
摘要:给定单向链表的一个节点指针,定义一个函数在O(1)时间删除该结点。 假设链表一定存在,并且该节点一定不是尾节点。 数据范围: 链表长度 [1,500]。 样例: 输入:链表 1->4->6->8 删掉节点:第2个节点即6(头节点为第0个节点) 输出:新链表 1->4->8 代码: /** * Def 阅读全文
posted @ 2025-05-14 10:19 回忆、少年 阅读(29) 评论(0) 推荐(0)
摘要:实现函数double Power(double base, int exponent),求base的 exponent次方。 不得使用库函数,同时不需要考虑大数问题。 只要输出结果与答案的绝对误差不超过 10−2 即视为正确。 注意: 不会出现底数和指数同为0的情况 当底数为0时,指数一定为正 底数 阅读全文
posted @ 2025-05-14 10:10 回忆、少年 阅读(28) 评论(0) 推荐(0)
摘要:输入一个 32 位整数,输出该数二进制表示中 1 的个数。 注意: 负数在计算机中用其绝对值的补码来表示。 数据范围: −100 ≤输入整数 ≤100 样例1: 输入:9 输出:2 解释:9的二进制表示是1001,一共有2个1。 样例2: 输入:-2 输出:31 解释:-2在计算机里会被表示成111 阅读全文
posted @ 2025-05-14 09:49 回忆、少年 阅读(26) 评论(0) 推荐(0)
摘要:给你一根长度为 n 绳子,请把绳子剪成 m 段(m、n 都是整数,2≤n≤58 并且 m≥2)。 每段的绳子的长度记为 k[1]、k[2]、……、k[m]。 k[1]k[2]…k[m] 可能的最大乘积是多少? 例如当绳子的长度是 8 时,我们把它剪成长度分别为 2、3、3 的三段,此时得到最大的乘积 阅读全文
posted @ 2025-05-14 09:30 回忆、少年 阅读(40) 评论(0) 推荐(0)
摘要:地上有一个 m 行和 n 列的方格,横纵坐标范围分别是0∼m−1 和 0∼n−1。 一个机器人从坐标 (0,0) 的格子开始移动,每一次只能向左,右,上,下四个方向移动一格。 但是不能进入行坐标和列坐标的数位之和大于 k 的格子。 请问该机器人能够达到多少个格子? 注意: 0<=m<=50 0<=n 阅读全文
posted @ 2025-05-14 09:11 回忆、少年 阅读(27) 评论(0) 推荐(0)
摘要:请设计一个函数,用来判断在一个矩阵中是否存在一条路径包含的字符按访问顺序连在一起恰好为给定字符串。 路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。 如果一条路径经过了矩阵中的某一个格子,则之后不能再次进入这个格子。 注意: 输入的路径字符串不为空; 所有出 阅读全文
posted @ 2025-05-13 10:51 回忆、少年 阅读(20) 评论(0) 推荐(0)
摘要:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个升序的数组的一个旋转,输出旋转数组的最小元素。 例如数组 {3,4,5,1,2}为 {1,2,3,4,5}的一个旋转,该数组的最小值为 1。 数组可能包含重复项。 注意:数组内所含元素非负,若数组大小为 0,请返回 −1。 阅读全文
posted @ 2025-05-13 10:32 回忆、少年 阅读(10) 评论(0) 推荐(0)
摘要:输入一个整数 n,求斐波那契数列的第 n项。 假定从 0 开始,第 0 项为 0。 数据范围: 0≤n≤39 样例: 输入整数 n=5 返回 5 代码: class Solution { public int Fibonacci(int n) { //初始化斐波那契数列的前两项:F(0) = 0, 阅读全文
posted @ 2025-05-13 09:52 回忆、少年 阅读(12) 评论(0) 推荐(0)
摘要:请用栈实现一个队列,支持如下四种操作: push(x) – 将元素x插到队尾; pop() – 将队首的元素弹出,并返回该元素; peek() – 返回队首元素; empty() – 返回队列是否为空; 注意: 你只能使用栈的标准操作:push to top,peek/pop from top, s 阅读全文
posted @ 2025-05-13 09:39 回忆、少年 阅读(31) 评论(0) 推荐(0)
摘要:给定一棵二叉树的其中一个节点,请找出中序遍历序列的下一个节点。 注意: 如果给定的节点是中序遍历序列的最后一个,则返回空节点; 二叉树一定不为空,且给定的节点一定不是空节点; 不同节点权值不同; 数据范围: 树中节点数量 [0,100]。 样例: 假定二叉树是:[2, 1, 3, null, nul 阅读全文
posted @ 2025-05-13 09:17 回忆、少年 阅读(19) 评论(0) 推荐(0)
摘要:输入一棵二叉树前序遍历和中序遍历的结果,请重建该二叉树。 注意: 二叉树中每个节点的值都互不相同; 输入的前序遍历和中序遍历一定合法; 数据范围: 树中节点数量范围 [0,100]。 样例: 给定: 前序遍历是:[3, 9, 20, 15, 7] 中序遍历是:[9, 3, 15, 20, 7] 返回 阅读全文
posted @ 2025-05-13 08:45 回忆、少年 阅读(15) 评论(0) 推荐(0)
摘要:输入一个链表的头结点,按照 从尾到头 的顺序返回节点的值。 返回的结果用数组存储。 数据范围: 0≤链表长度 ≤1000。 样例: 输入:[2, 3, 5] 返回:[5, 3, 2] 代码: /** * Definition for singly-linked list. * class ListN 阅读全文
posted @ 2025-05-12 10:45 回忆、少年 阅读(18) 评论(0) 推荐(0)
摘要:请实现一个函数,把字符串中的每个空格替换成"%20"。 数据范围: 0≤输入字符串的长度 ≤1000。 注意输出字符串的长度可能大于 1000。 样例: 输入:"We are happy." 输出:"We%20are%20happy." 代码: class Solution { public Str 阅读全文
posted @ 2025-05-12 10:34 回忆、少年 阅读(10) 评论(0) 推荐(0)
摘要:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。 请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 数据范围: 二维数组中元素个数范围 [0,1000] 样例: 输入数组: [ [1,2,8,9], [2,4,9,12], [4, 阅读全文
posted @ 2025-05-12 10:22 回忆、少年 阅读(9) 评论(0) 推荐(0)
摘要:给定一个长度为 n+1 的数组nums,数组中所有的数均在 1∼n 的范围内,其中 n≥1。 请找出数组中任意一个重复的数,但不能修改输入的数组。 数据范围: 1≤n≤1000 样例: 给定 nums = [2, 3, 5, 4, 3, 2, 6, 7]。 返回 2 或 3。 思考题:如果只能使用O 阅读全文
posted @ 2025-05-12 09:34 回忆、少年 阅读(27) 评论(0) 推荐(0)
摘要:给定一个长度为 n的整数数组 nums,数组中所有的数字都在 0∼n−1的范围内。 数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。 请找出数组中任意一个重复的数字。 注意:如果某些数字不在 0∼n−1的范围内,或数组中不包含重复数字,则返回 -1; 数据范围: 0≤n 阅读全文
posted @ 2025-05-12 09:16 回忆、少年 阅读(24) 评论(0) 推荐(0)
摘要:给定一个包含 n + 1 个整数的数组 nums ,其数字都在 [1, n] 范围内(包括 1 和 n),可知至少存在一个重复的整数。 假设 nums 只有 一个重复的整数 ,返回 这个重复的数 。 你设计的解决方案必须 不修改 数组 nums 且只用常量级 O(1) 的额外空间。 示例1: 输入: 阅读全文
posted @ 2025-05-11 09:13 回忆、少年 阅读(60) 评论(0) 推荐(0)
摘要:整数数组的一个 排列 就是将其所有成员以序列或线性顺序排列。 例如,arr = [1,2,3] ,以下这些都可以视作 arr 的排列:[1,2,3]、[1,3,2]、[3,1,2]、[2,3,1] 。 整数数组的 下一个排列 是指其整数的下一个字典序更大的排列。更正式地,如果数组的所有排列根据其字典 阅读全文
posted @ 2025-05-11 09:12 回忆、少年 阅读(23) 评论(0) 推荐(0)
摘要:给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums ,原地 对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。 我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。 必须在不使用库内置的 sort 函数的情况下解决这个问题。 示例1: 输入:nums = [2, 阅读全文
posted @ 2025-05-11 09:12 回忆、少年 阅读(21) 评论(0) 推荐(0)
摘要:给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例1: 输入:nums = [3,2,3] 输出:3 示例2: 输入:nums = [2,2,1,1,1,2,2] 输 阅读全文
posted @ 2025-05-11 09:12 回忆、少年 阅读(28) 评论(0) 推荐(0)
摘要:给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。 示例1: 输入:nums = [2,2,1] 输出:1 示例2: 输入:nums = [4,1,2, 阅读全文
posted @ 2025-05-11 09:12 回忆、少年 阅读(23) 评论(0) 推荐(0)
摘要:给你两个单词 word1 和 word2, 请返回将 word1 转换成 word2 所使用的最少操作数 。 你可以对一个单词进行如下三种操作: 插入一个字符 删除一个字符 替换一个字符 示例1: 输入:word1 = "horse", word2 = "ros" 输出:3 解释: horse -> 阅读全文
posted @ 2025-05-11 09:11 回忆、少年 阅读(17) 评论(0) 推荐(0)
摘要:给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 。 一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。 例如,"ace" 是 "a 阅读全文
posted @ 2025-05-11 08:48 回忆、少年 阅读(25) 评论(0) 推荐(0)
摘要:给你一个字符串 s,找到 s 中最长的 回文 子串。 示例1: 输入:s = "babad" 输出:"bab" 解释:"aba" 同样是符合题意的答案。 示例2: 输入:s = "cbbd" 输出:"bb" 提示: 1 <= s.length <= 1000 s 仅由数字和英文字母组成 代码: cl 阅读全文
posted @ 2025-05-09 20:57 回忆、少年 阅读(17) 评论(0) 推荐(0)
摘要:给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。 说明:每次只能向下或者向右移动一步。 示例1: 输入:grid = [[1,3,1],[1,5,1],[4,2,1]] 输出:7 解释:因为路径 1→3→1→1→1 的总和最小。 示 阅读全文
posted @ 2025-05-09 19:37 回忆、少年 阅读(24) 评论(0) 推荐(0)
摘要:一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。 问总共有多少条不同的路径? 示例1: 输入:m = 3, n = 7 输出:28 示例2: 输入:m = 阅读全文
posted @ 2025-05-09 19:26 回忆、少年 阅读(15) 评论(0) 推荐(0)
摘要:给你一个只包含 '(' 和 ')' 的字符串,找出最长有效(格式正确且连续)括号子串的长度。 示例1: 输入:s = "(()" 输出:2 解释:最长有效括号子串是 "()" 示例2: 输入:s = ")()())" 输出:4 解释:最长有效括号子串是 "()()" 示例3: 输入:s = "" 输 阅读全文
posted @ 2025-05-09 10:45 回忆、少年 阅读(24) 评论(0) 推荐(0)
摘要:给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。 示例1: 输入:nums = [1,5,11,5] 输出:true 解释:数组可以分割成 [1, 5, 5] 和 [11] 。 示例2: 输入:nums = [1,2,3,5] 阅读全文
posted @ 2025-05-09 10:35 回忆、少年 阅读(27) 评论(0) 推荐(0)
摘要:给你一个整数数组 nums ,请你找出数组中乘积最大的非空连续 子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。 测试用例的答案是一个 32-位 整数。 示例1: 输入: nums = [2,3,-2,4] 输出: 6 解释: 子数组 [2,3] 有最大乘积 6。 示例2: 输入: 阅读全文
posted @ 2025-05-09 10:19 回忆、少年 阅读(9) 评论(0) 推荐(0)
摘要:给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。 示例1: 输入:nums = [10,9,2,5,3,7,101,18] 阅读全文
posted @ 2025-05-09 09:56 回忆、少年 阅读(29) 评论(0) 推荐(0)
摘要:给你一个字符串 s 和一个字符串列表 wordDict 作为字典。如果可以利用字典中出现的一个或多个单词拼接出 s 则返回 true。 注意:不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。 示例1: 输入: s = "leetcode", wordDict = ["leet", " 阅读全文
posted @ 2025-05-09 09:06 回忆、少年 阅读(11) 评论(0) 推荐(0)
摘要:给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。 计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 -1 。 你可以认为每种硬币的数量是无限的。 示例1: 输入:coins = [1, 2, 5], amoun 阅读全文
posted @ 2025-05-09 08:46 回忆、少年 阅读(19) 评论(0) 推荐(0)
摘要:给你一个整数 n ,返回 和为 n 的完全平方数的最少数量 。 完全平方数 是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,1、4、9 和 16 都是完全平方数,而 3 和 11 不是。 示例1: 输入:n = 12 输出:3 解释:12 = 4 + 4 + 4 示例 阅读全文
posted @ 2025-05-08 10:36 回忆、少年 阅读(98) 评论(0) 推荐(0)
摘要:你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。 示例 阅读全文
posted @ 2025-05-08 10:11 回忆、少年 阅读(14) 评论(0) 推荐(0)
摘要:给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中,每个数是它左上方和右上方的数的和。 示例1: 输入: numRows = 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]] 示例2: 输入: numRows 阅读全文
posted @ 2025-05-08 09:51 回忆、少年 阅读(46) 评论(0) 推荐(0)
摘要:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 示例1: 输入:n = 2 输出:2 解释:有两种方法可以爬到楼顶。 1 阶 + 1 阶 2 阶 示例2: 输入:n = 3 输出:3 解释:有三种方法可以爬到楼顶。 1 阶 + 阅读全文
posted @ 2025-05-08 09:33 回忆、少年 阅读(24) 评论(0) 推荐(0)
摘要:给你一个字符串 s 。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。例如,字符串 "ababcc" 能够被分为 ["abab", "cc"],但类似 ["aba", "bcc"] 或 ["ab", "ab", "cc"] 的划分是非法的。 注意,划分结果需要满足:将所有划分结 阅读全文
posted @ 2025-05-08 09:25 回忆、少年 阅读(25) 评论(0) 推荐(0)
摘要:给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向后跳转的最大长度。换句话说,如果你在 nums[i] 处,你可以跳转到任意 nums[i + j] 处: 0 <= j <= nums[i] i + j < n 返回到达 n 阅读全文
posted @ 2025-05-08 08:57 回忆、少年 阅读(20) 评论(0) 推荐(0)
摘要:给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标,如果可以,返回 true ;否则,返回 false 。 示例1: 输入:nums = [2,3,1,1,4] 输出:true 解释:可以先跳 1 步, 阅读全文
posted @ 2025-05-08 08:35 回忆、少年 阅读(19) 评论(0) 推荐(0)
摘要:给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 阅读全文
posted @ 2025-05-07 13:03 回忆、少年 阅读(25) 评论(0) 推荐(0)
摘要:中位数是有序整数列表中的中间值。如果列表的大小是偶数,则没有中间值,中位数是两个中间值的平均值。 例如 arr = [2,3,4] 的中位数是 3 。 例如 arr = [2,3] 的中位数是 (2 + 3) / 2 = 2.5 。 实现 MedianFinder 类: MedianFinder() 阅读全文
posted @ 2025-05-07 13:02 回忆、少年 阅读(24) 评论(0) 推荐(0)
摘要:给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。 示例1: 输入: nums = [1,1,1,2,2,3], k = 2 输出: [1,2] 示例2: 输入: nums = [1], k = 1 输出: [1] 提示: 1 <= n 阅读全文
posted @ 2025-05-07 11:07 回忆、少年 阅读(13) 评论(0) 推荐(0)
摘要:给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。 请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例1: 输入: [3,2,1,5,6,4], k = 2 输出: 5 示例2: 输 阅读全文
posted @ 2025-05-07 11:07 回忆、少年 阅读(21) 评论(0) 推荐(0)
摘要:给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来的矩形的最大面积。 示例1: 输入:heights = [2,1,5,6,2,3] 输出:10 解释:最大的矩形为图中红色区域,面积为 10 示例2: 输入: heights = [ 阅读全文
posted @ 2025-05-07 11:06 回忆、少年 阅读(39) 评论(0) 推荐(0)
摘要:给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用 0 来代替。 示例1: 输入: temperatures = [73,74,75,71,69 阅读全文
posted @ 2025-05-07 09:01 回忆、少年 阅读(23) 评论(0) 推荐(0)
摘要:给定一个经过编码的字符串,返回它解码后的字符串。 编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。 你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。 此外,你 阅读全文
posted @ 2025-05-06 14:04 回忆、少年 阅读(44) 评论(0) 推荐(0)
摘要:设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。 void push(int val) 将元素val推入堆栈。 void pop() 删除堆栈顶部的元素。 int top() 获取堆栈顶部的元 阅读全文
posted @ 2025-05-06 13:25 回忆、少年 阅读(50) 评论(0) 推荐(0)
摘要:给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 每个右括号都有一个对应的相同类型的左括号。 示例1: 输入:s = "()" 输出:true 示例2: 输入:s 阅读全文
posted @ 2025-05-06 13:11 回忆、少年 阅读(26) 评论(0) 推荐(0)
摘要:给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。 算法的时间复杂度应该为 O(log (m+n)) 。 示例1: 输入:nums1 = [1,3], nums2 = [2] 输出:2.00000 解释:合并数组 = [1, 阅读全文
posted @ 2025-05-06 09:41 回忆、少年 阅读(29) 评论(0) 推荐(0)
摘要:已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums = [0,1,2,4,5,6,7] 在变化后可能得到: 若旋转 4 次,则可以得到 [4,5,6,7,0,1,2] 若旋转 7 次,则可以得到 [0,1,2,4,5,6,7] 注意,数 阅读全文
posted @ 2025-05-06 09:19 回忆、少年 阅读(35) 评论(0) 推荐(0)
摘要:整数数组 nums 按升序排列,数组中的值 互不相同 。 在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k+1], ..., nums[n-1], nums[0], nums[1], ..., 阅读全文
posted @ 2025-05-06 08:48 回忆、少年 阅读(18) 评论(0) 推荐(0)
摘要:给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target,返回 [-1, -1]。 你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。 示例1: 输入:nums = [5,7,7 阅读全文
posted @ 2025-05-04 12:30 回忆、少年 阅读(28) 评论(0) 推荐(0)
摘要:给你一个满足下述两条属性的 m x n 整数矩阵: 每行中的整数从左到右按非严格递增顺序排列。 每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target ,如果 target 在矩阵中,返回 true ;否则,返回 false 。 示例1: 输入:matrix = [[1,3,5,7] 阅读全文
posted @ 2025-05-04 12:13 回忆、少年 阅读(10) 评论(0) 推荐(0)
摘要:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例1: 输入: nums = [1,3,5,6], target = 5 输出: 2 示例2: 输入: nums = [1, 阅读全文
posted @ 2025-05-04 11:03 回忆、少年 阅读(23) 评论(0) 推荐(0)
摘要:给你一个字符串 s,请你将 s 分割成一些 子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。 示例1: 输入:s = "aab" 输出:[["a","a","b"],["aa","b"]] 示例2: 输入:s = "a" 输出:[["a"]] 提示: 1 <= s.length <= 阅读全文
posted @ 2025-05-04 09:57 回忆、少年 阅读(37) 评论(0) 推荐(0)
摘要:按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。 给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。 每一种解法包含一个不同的 n 皇后问题 的棋子放置方案,该方 阅读全文
posted @ 2025-05-04 09:33 回忆、少年 阅读(49) 评论(0) 推荐(0)
摘要:给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。 示 阅读全文
posted @ 2025-05-04 09:00 回忆、少年 阅读(36) 评论(0) 推荐(0)
摘要:数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。 示例1: 输入:n = 3 输出:["((()))","(()())","(())()","()(())","()()()"] 示例2: 输入:n = 1 输出:["()"] 提示: 1 <= n <= 阅读全文
posted @ 2025-05-03 12:41 回忆、少年 阅读(18) 评论(0) 推荐(0)
摘要:给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。 candidates 中的 同一个 数字可以 无限制重复被选取 。如果 阅读全文
posted @ 2025-05-03 11:02 回忆、少年 阅读(38) 评论(0) 推荐(0)
摘要:给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例1: 输入:digits = "23" 输出:["ad","ae","af","bd","be","bf","cd","ce", 阅读全文
posted @ 2025-05-03 10:39 回忆、少年 阅读(38) 评论(0) 推荐(0)
摘要:给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 示例1: 输入:nums = [1,2,3] 输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]] 示例2: 阅读全文
posted @ 2025-05-03 10:07 回忆、少年 阅读(19) 评论(0) 推荐(0)
摘要:给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例1: 输入:nums = [1,2,3] 输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]] 示例2: 输入:nums = [0,1] 输出: 阅读全文
posted @ 2025-05-03 09:31 回忆、少年 阅读(17) 评论(0) 推荐(0)
摘要:Trie(发音类似 "try")或者说 前缀树 是一种树形数据结构,用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景,例如自动补全和拼写检查。 请你实现 Trie 类: Trie() 初始化前缀树对象。 void insert(String word) 向前缀树中插入字符串 w 阅读全文
posted @ 2025-05-03 09:27 回忆、少年 阅读(34) 评论(0) 推荐(0)