
剑指Offer
文章平均质量分 58
面试中的高频问题
乌龟盖瑞
这个作者很懒,什么都没留下…
展开
-
剑指Offer-动态规划 10- II. 青蛙跳台阶问题
一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n级的台阶总共有多少种跳法。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。示例 1:输入:n = 2输出:2示例 2:输入:n = 7输出:21示例 3:输入:n = 0输出:1提示:0 <= n <= 100把这个问题抽象出来:设跳上n级台阶有f(n)种跳法,最后一步只有2中情况要不是1级,要不是2级。当为1时,其他n-.原创 2021-04-02 17:41:11 · 275 阅读 · 0 评论 -
剑指Offer-动态规划 10- I. 斐波那契数列
剑指Offer-动态规划 10- I. 斐波那契数列写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下:F(0) = 0,F(1)= 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。示例 1:输入...原创 2021-04-02 16:36:09 · 396 阅读 · 0 评论 -
LeetCode.7. 整数反转
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围[, − 1] ,就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)。示例 1:输入:x = 123输出:321示例 2:输入:x = -123输出:-321示例 3:输入:x = 120输出:21示例 4:输入:x = 0输出:0提示:<= x <= - 1这个题目是《剑指Offer-数据结构 ...原创 2021-04-01 18:22:53 · 250 阅读 · 0 评论 -
剑指Offer-数据结构 67. 把字符串转换成整数
剑指Offer-数据结构 67. 把字符串转换成整数写一个函数 StrToInt,实现把字符串转换成整数这个功能。不能使用 atoi 或者其他类似的库函数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。该字符串除了有效的整数部分之后也可能会存在多余的字符,这些字符可以被忽略,原创 2021-03-31 18:27:31 · 236 阅读 · 0 评论 -
剑指Offer-数据结构 59 - II. 队列的最大值
剑指Offer-数据结构 59 - II. 队列的最大值请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value、push_back 和 pop_front 的均摊时间复杂度都是O(1)。若队列为空,pop_front 和 max_value需要返回 -1限制:1 <= push_back,pop_front,max_value的总操作数<= 100001 <= value <= 10^5这个题目其实就是窗口最大值的双向单调..原创 2021-03-26 18:09:52 · 157 阅读 · 0 评论 -
剑指Offer-数据结构 59 - I. 滑动窗口的最大值
剑指Offer-数据结构 59 - I. 滑动窗口的最大值Q:给定一个数组 nums 和滑动窗口的大小 k,请找出所有滑动窗口里的最大值。示例:输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3输出: [3,3,5,5,6,7]解释: 滑动窗口的位置 最大值--------------- -----[1 3 -1] -3 5 3 6 7 31 [3 -1 -3...原创 2021-03-24 14:00:43 · 318 阅读 · 0 评论 -
剑指Offer-数据结构 02. 左旋字符串
剑指Offer-数据结构 02. 左旋字符串Q: 字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。示例 1:输入: s = "abcdefg", k = 2输出:"cdefgab"示例 2:输入: s = "lrloseumgh", k = 6输出:"umghlrlose"限制:1 <= k < s.l...原创 2021-03-18 17:05:16 · 138 阅读 · 0 评论 -
剑指Offer-数据结构 35. 复杂链表的复制
剑指Offer-数据结构35. 复杂链表的复制Q:请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null。eg:输入:head = [[7,null],[13,0],[11,4],[10,2],[1,0]]输出:[[7,null],[13,0],[11,4],[10,2],[1,0]]如果是复制一个普通的单链表,那很简单,依次创建节点,并设置next.原创 2021-03-18 15:15:51 · 190 阅读 · 0 评论 -
剑指Offer-数据结构 30. 包含 min 函数的栈
剑指Offer-数据结构 30. 包含 min 函数的栈Q:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0);minStack.push(-3);minStack.min(); --> 返回 -3.minStack.pop();minSta.原创 2021-03-16 16:53:00 · 119 阅读 · 0 评论 -
剑指Offer-数据结构 24. 反转链表
剑指Offer-数据结构 剑指 Offer 24. 反转链表Q:定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL限制:0 <= 节点个数 <= 5000这个题目在《C和指针》的学习部分已经详细分析了,请参考:《高频面试考点:反序排列单链表》,分析了4中不同的算法思路。这里..原创 2021-03-15 17:06:12 · 162 阅读 · 0 评论 -
剑指Offer-数据结构 20. 表示数值的字符串
剑指Offer-数据结构 53. 表示数值的字符串Q: 请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100"、"5e2"、"-123"、"3.1416"、"-1E-16"、"0123"都表示数值,但"12e"、"1a3.14"、"1.2.3"、"+-5"及"12e+5.4"都不是。这种问题在实际开发过程中一般都不会有太大问题,因为有正则表达式来实现,但是正则表达式如何实现的呢?这就是这个题目在实际生产过程中解决的问题。这个题目有很多种情况,比如+-号只能在首位和原创 2021-03-15 16:51:14 · 143 阅读 · 0 评论 -
剑指Offer-数据结构 09. 用两个栈实现队列
剑指Offer-数据结构 09. 用两个栈实现队列Q:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead操作返回 -1 )示例 1:输入:["CQueue","appendTail","deleteHead","deleteHead"][[],[3],[],[]]输出:[null,null,3,-1]示例 2:输入:[.原创 2021-03-12 13:56:29 · 133 阅读 · 0 评论 -
剑指Offer-数据结构 06. 从尾到头打印链表
剑指Offer-数据结构 06. 从尾到头打印链表Q:输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 1:输入:head = [1,3,2]输出:[2,3,1]限制:0 <= 链表长度 <= 10000这个题目即使考察反转链表,反转链表之前我们有专门讲过,讲了4种方法,请参考《高频面试考点:反序排列单链表》实现示例:typedef struct NODE { struct NODE *link; int.原创 2021-03-11 16:01:58 · 124 阅读 · 0 评论