随笔分类 -  剑指Offer

摘要:给出一个二叉树,输入两个树节点,求它们的最低公共祖先。 一个树节点的祖先节点包括它本身。 注意: 输入的二叉树不为空; 输入的两个节点一定不为空,且是二叉树中的节点; 数据范围: 树中节点数量 [0,500]。 样例: 二叉树[8, 12, 2, null, null, 6, 4, null, nu 阅读全文
posted @ 2025-06-02 13:11 回忆、少年 阅读(23) 评论(0) 推荐(0)
摘要:请你写一个函数 StrToInt,实现把字符串转换成整数这个功能。 当然,不能使用 atoi 或者其他类似的库函数。 数据范围: 输入字符串长度 [0,20]。 样例: 输入:"123" 输出:123 注意: 你的函数应满足下列条件: 忽略所有行首空格,找到第一个非空格字符,可以是 ‘+/−’ 表示 阅读全文
posted @ 2025-06-02 13:04 回忆、少年 阅读(39) 评论(0) 推荐(0)
摘要:给定一个数组A[0, 1, …, n-1],请构建一个数组B[0, 1, …, n-1],其中B中的元素B[i]=A[0]×A[1]×… ×A[i-1]×A[i+1]×…×A[n-1]。 不能使用除法。 数据范围: 输入数组长度 [0,20]。 样例: 输入:[1, 2, 3, 4, 5] 输出:[ 阅读全文
posted @ 2025-06-02 13:03 回忆、少年 阅读(12) 评论(0) 推荐(0)
摘要:写一个函数,求两个整数之和,要求在函数体内不得使用 +、-、×、÷ 四则运算符号。 数据范围: 输入和输出都在int范围内。 样例: 输入:num1 = 1 , num2 = 2 输出:3 代码: class Solution { public int add(int num1, int num2) 阅读全文
posted @ 2025-06-02 12:29 回忆、少年 阅读(18) 评论(0) 推荐(0)
摘要:求 1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case 等关键字及条件判断语句 (A?B:C)。 数据范围: 1≤n≤50000。 样例: 输入:10 输出:55 代码: class Solution { public long getSum(int n) 阅读全文
posted @ 2025-06-02 10:22 回忆、少年 阅读(38) 评论(0) 推荐(0)
摘要:假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖 一次 该股票可能获得的利润是多少? 例如一只股票在某些时间节点的价格为 [9,11,8,5,7,12,16,14]。 如果我们能在价格为 5 的时候买入并在价格为 16 时卖出,则能收获最大的利润 11。 数据范围: 输入数组长度 [0,50 阅读全文
posted @ 2025-06-02 10:22 回忆、少年 阅读(19) 评论(0) 推荐(0)
摘要:0,1,…,n−1 这 n 个数字 (n>0) 排成一个圆圈,从数字 0 开始每次从这个圆圈里删除第 m 个数字。 求出这个圆圈里剩下的最后一个数字。 数据范围: 1≤n,m≤4000 样例: 输入:n=5 , m=3 输出:3 代码: class Solution { public int las 阅读全文
posted @ 2025-06-02 10:22 回忆、少年 阅读(14) 评论(0) 推荐(0)
摘要:从扑克牌中随机抽 5 张牌,判断是不是一个顺子,即这 5 张牌是不是连续的。 2∼10 为数字本身,A 为 1,J 为 11,Q 为 12,K 为 13,大小王可以看做任意数字。 为了方便,大小王均以 0 来表示,并且假设这副牌中大小王均有两张。 注意,有可能手里没有拿任何牌。 样例1: 输入:[8 阅读全文
posted @ 2025-06-02 09:25 回忆、少年 阅读(92) 评论(0) 推荐(0)
摘要:将一个骰子投掷 n 次,获得的总点数为 s,s 的可能范围为 n∼6n。 掷出某一点数,可能有多种掷法,例如投掷 2 次,掷出 3 点,共有 [1,2],[2,1] 两种掷法。 请求出投掷 n 次,掷出 n∼6n 点分别有多少种掷法。 数据范围: 1≤n≤10 样例1: 输入:n=1 输出:[1, 阅读全文
posted @ 2025-06-02 09:01 回忆、少年 阅读(42) 评论(0) 推荐(0)
摘要:给定一个数组和滑动窗口的大小,请找出所有滑动窗口里的最大值。 例如,如果输入数组 [2,3,4,2,6,2,5,1] 及滑动窗口的大小 3,那么一共存在 6 个滑动窗口,它们的最大值分别为 [4,4,6,6,6,5]。 注意: 数据保证 k 大于 0,且 k 小于等于数组长度。 数据范围: 数组长度 阅读全文
posted @ 2025-06-01 10:59 回忆、少年 阅读(16) 评论(0) 推荐(0)
摘要:字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。 请定义一个函数实现字符串左旋转操作的功能。 比如输入字符串"abcdefg"和数字 2,该函数将返回左旋转 2 位得到的结果"cdefgab"。 注意: 数据保证 n 小于等于输入字符串的长度。 数据范围: 输入字符串长度 [0,10 阅读全文
posted @ 2025-06-01 10:18 回忆、少年 阅读(12) 评论(0) 推荐(0)
摘要:输入一个英文句子,单词之间用一个空格隔开,且句首和句尾没有多余空格。 翻转句子中单词的顺序,但单词内字符的顺序不变。 为简单起见,标点符号和普通字母一样处理。 例如输入字符串"I am a student.",则输出"student. a am I"。 数据范围: 输入字符串长度 [0,1000]。 阅读全文
posted @ 2025-06-01 10:10 回忆、少年 阅读(14) 评论(0) 推荐(0)
摘要:输入一个非负整数 S,打印出所有和为 S 的连续正数序列(至少含有两个数)。 例如输入 15,由于 1+2+3+4+5=4+5+6=7+8=15,所以结果打印出 3 个连续序列 1∼5、4∼6 和 7∼8。 数据范围: 0≤S≤1000 样例: 输入:15 输出:[[1,2,3,4,5],[4,5, 阅读全文
posted @ 2025-06-01 10:00 回忆、少年 阅读(18) 评论(0) 推荐(0)
摘要:输入一个数组和一个数字 s,在数组中查找两个数,使得它们的和正好是 s。 如果有多对数字的和等于 s,输出任意一对即可。 你可以认为每组输入中都至少含有一组满足条件的输出。 数据范围: 数组长度 [1,1002]。 样例: 输入:[1,2,3,4] , sum=7 输出:[3,4] 代码: clas 阅读全文
posted @ 2025-06-01 09:32 回忆、少年 阅读(6) 评论(0) 推荐(0)
摘要:在一个数组中除了一个数字只出现一次之外,其他数字都出现了三次。 请找出那个只出现一次的数字。 你可以假设满足条件的数字一定存在。 思考题: 如果要求只使用 O(n) 的时间和额外 O(1) 的空间,该怎么做呢? 数据范围: 数组长度 [1,1500]。 数组内元素取值范围 [0,1000]。 样例: 阅读全文
posted @ 2025-06-01 09:01 回忆、少年 阅读(17) 评论(0) 推荐(0)
摘要:一个整型数组里除了两个数字之外,其他的数字都出现了两次。 请写程序找出这两个只出现一次的数字。 你可以假设这两个数字一定存在。 数据范围: 数组长度 [1,1000]。 样例: 输入:[1,2,3,3,4,4] 输出:[1,2] 代码: class Solution { public int[] f 阅读全文
posted @ 2025-06-01 08:42 回忆、少年 阅读(14) 评论(0) 推荐(0)
摘要:输入一棵二叉树的根结点,判断该树是不是平衡二叉树。 如果某二叉树中任意结点的左右子树的深度相差不超过 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 回忆、少年 阅读(65) 评论(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)