![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
剑指Offer
pseudo kode
这个作者很懒,什么都没留下…
展开
-
JZ10-II. 青蛙跳台阶问题
文章目录1. 题目2. 思路3. 实现4. 其它1. 题目[原题链接]一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。示例 1:输入:n = 2输出:2示例 2:输入:n = 7输出:21示例 3:输入:n = 0输出:1提示:0 <= n <= 100注意:本题与LeetCode主站 70 题相同:https原创 2020-10-07 13:50:58 · 155 阅读 · 0 评论 -
JZ10-I. 斐波那契数列
文章目录1. 题目2. 思路3. 实现4. 其它1. 题目写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项。斐波那契数列的定义如下:F(0) = 0, F(1) = 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。示例 1:输入:n = 2输出:1原创 2020-09-22 21:11:20 · 269 阅读 · 0 评论 -
JZ52. 两个链表的第一个公共节点
文章目录1. 题目2. 思路3. 实现4. 其它1. 题目[原题链接]输入两个链表,找出它们的第一个公共节点。如下面的两个链表:在节点 c1 开始相交。示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Reference of the node with value = 8输入解释:相交节点的值为 8 (注意,如果两个列表相交则不能为 0)。从各自的表原创 2020-09-17 19:18:01 · 208 阅读 · 1 评论 -
JZ24. 反转链表
文章目录1. 题目2. 思路3. 实现4. 其它1. 题目[原题链接]定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL限制:0 <= 节点个数 <= 5000注意:本题与LeetCode主站 206 题相同:https://leetcode-cn.com/problems/reverse-linke原创 2020-09-17 10:34:59 · 119 阅读 · 0 评论 -
JZ22. 链表中倒数第k个节点
文章目录1. 题目2. 思路3. 实现4. 其它1. 题目[原题链接]输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。示例:给定一个链表: 1->2->3->4->5, 和 k = 2.返回链表 4->5.2. 思路基本想法:①统计链表节点的个数,记为 n;②设置一个指针走原创 2020-09-16 21:29:40 · 106 阅读 · 0 评论 -
JZ18. 删除链表的节点
文章目录1. 题目2. 思路3. 实现4. 其它1. 题目[原题链接]给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。注意:此题对比原题有改动。(这里的改动指的应该是在《剑指Offer-第二版》中,要求在O(1)时间内删除节点)示例 1:输入: head = [4,5,1,9], val = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.示例原创 2020-09-16 20:31:56 · 151 阅读 · 0 评论 -
JZ06. 从尾到头打印链表
文章目录1. 题目2. 思路3. 实现4. 其它1. 题目[原题链接]输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 1:输入:head = [1,3,2]输出:[2,3,1]限制:0 <= 链表长度 <= 100002. 思路思路1:链表只能从前至后访问每个节点,而题目要求倒序输出节点值,也就是说第一个遍历到的节点最后一个输出,最后一个遍历到的节点第一个输出。这种FILO的需求可以借助栈来实现。每经过一个节点时,把该节点放到辅助栈中,当遍历完原创 2020-09-15 20:15:22 · 242 阅读 · 0 评论 -
JZ59-II. 队列的最大值
文章目录1. 题目2. 思路3. 实现4. 其它1. 题目请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value、push_back 和 pop_front 的均摊时间复杂度都是O(1)。若队列为空,pop_front 和 max_value 需要返回 -1示例 1:输入: ["MaxQueue","push_back","push_back","max_value","pop_front","max_value"][[],[1],[2],[],[],[原创 2020-09-15 15:11:26 · 89 阅读 · 0 评论 -
JZ59-I. 滑动窗口的最大值
文章目录1. 题目2. 思路3. 实现4. 其它1. 题目[原题链接]给定一个数组 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 3 1 [3 -1原创 2020-09-15 11:04:07 · 159 阅读 · 0 评论 -
JZ30. 包含min函数的栈
目录1. 题目2. 思路3. 实现4. 其它1. 题目用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )示例 1:输入:["CQueue","appendTail","deleteH`在这里插入代码片`ead","deleteHead"][[],[3],[],[]]输出:[null,null,3,-1]示例 2:输入原创 2020-09-14 15:07:55 · 141 阅读 · 0 评论 -
JZ09. 用两个栈实现队列
目录前言1. 题目2. 思路3. 实现4. 其它前言1. 题目用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )示例 1:输入:["CQueue","appendTail","deleteHead","deleteHead"][[],[3],[],[]]输出:[null,null,3,-1]示例 2:输入:["CQ原创 2020-09-13 16:53:02 · 216 阅读 · 0 评论