![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
剑指offer
qq_34673038
这个作者很懒,什么都没留下…
展开
-
剑指offer 1.找出数组中重复的数字
题目 给定一个长度为 n 的整数数组 nums,数组中所有的数字都在 0∼n−1 的范围内。 数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。 请找出数组中任意一个重复的数字。 注意:如果某些数字不在 0∼n−1 的范围内,或数组中不包含重复数字,则返回 -1; 样例 给定 nums = [2, 3, 5, 4, 3, 2, 6, 7]。 返回 2 或 3。 思路 暴...原创 2019-05-15 09:57:35 · 167 阅读 · 0 评论 -
剑指offer 16.删除链表结点
给定单向链表的一个节点指针,定义一个函数在O(1)时间删除该结点。 假设链表一定存在,并且该节点一定不是尾节点。 样例 输入:链表 1->4->6->8 删掉节点:第2个节点即6(头节点为第0个节点) 输出:新链表 1->4->8 /** * Definition for singly-linked list. * struct ListNode { * ...原创 2019-05-17 00:04:59 · 61 阅读 · 0 评论 -
剑指offer 15.数值的整数平方
class Solution { public: double Power(double base, int exponent) { double sum=1; if(exponent>0){ while(exponent){ sum*=base; exponent...原创 2019-05-16 23:58:25 · 211 阅读 · 0 评论 -
剑指offer 14.二进制中1的个数
题目 输入一个32位整数,输出该数二进制表示中1的个数。 注意: 负数在计算机中用其绝对值的补码来表示。 样例1 输入:9 输出:2 解释:9的二进制表示是1001,一共有2个1。 样例2 输入:-2 输出:31 解释:-2在计算机里会被表示成11111111111111111111111111111110, 一共有31个1。 代码 class Solution { public: int...原创 2019-05-16 23:48:02 · 52 阅读 · 0 评论 -
剑指offer 13.剪绳子
给你一根长度为 n 绳子,请把绳子剪成 m 段(m、n 都是整数,2≤n≤58 并且 m≥2)。 每段的绳子的长度记为k[0]、k[1]、……、k[m]。k[0]k[1] … k[m] 可能的最大乘积是多少? 例如当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到最大的乘积18。 样例 输入:8 输出:18 class Solution { public: int max...原创 2019-05-16 17:32:26 · 85 阅读 · 0 评论 -
剑指offer 12.机器人的运动
地上有一个 m 行和 n 列的方格,横纵坐标范围分别是 0∼m−1 和 0∼n−1。 一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格。 但是不能进入行坐标和列坐标的数位之和大于 k 的格子。 请问该机器人能够达到多少个格子? 样例1 输入:k=7, m=4, n=5 输出:20 样例2 输入:k=18, m=40, n=40 输出:1484 解释:当k为18时,机...原创 2019-05-16 17:18:13 · 105 阅读 · 0 评论 -
剑指offer 11.用两个栈实现队列
问题 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。 路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。 如果一条路径经过了矩阵中的某一个格子,则之后不能再次进入这个格子。 注意: 输入的路径不为空; 所有出现的字符均为大写英文字母; 样例 matrix= [ [“A”,“B”,“C”,“E”], [“S”,“F”,“C”,“S...原创 2019-05-16 16:37:36 · 61 阅读 · 0 评论 -
剑指offer 10.旋转数组的最小数字
题目 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个升序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 数组可能包含重复项。 注意:数组内所含元素非负,若数组大小为0,请返回-1。 样例 输入:nums=[2,2,2,0,1] 输出:0 代码 class Solution { publ...原创 2019-05-16 13:45:00 · 48 阅读 · 0 评论 -
剑指offer 9.斐波那契数列
斐波那契数列 输入一个整数 n ,求斐波那契数列的第 n 项。 假定从0开始,第0项为0。(n<=39) 样例 输入整数 n=5 返回 5 代码 class Solution { public: int Fibonacci(int n) { int a = 0,b=1; while(n--){ int c=a+b; ...原创 2019-05-16 13:43:42 · 58 阅读 · 0 评论 -
剑指offer 8.用两个栈实现队列
题目 请用栈实现一个队列,支持如下四种操作: push(x) – 将元素x插到队尾; pop() – 将队首的元素弹出,并返回该元素; peek() – 返回队首元素; empty() – 返回队列是否为空; 注意: 你只能使用栈的标准操作:push to top,peek/pop from top, size 和 is empty; 如果你选择的编程语言没有栈的标准库,你可以使用list或者de...原创 2019-05-16 13:30:24 · 87 阅读 · 0 评论 -
剑指offer 7.二叉树的下一个结点
题目 给定一棵二叉树的其中一个节点,请找出中序遍历序列的下一个节点。 注意: 如果给定的节点是中序遍历序列的最后一个,则返回空节点; 二叉树一定不为空,且给定的节点一定不是空节点; 样例 假定二叉树是:[2, 1, 3, null, null, null, null], 给出的是值等于2的节点。 则应返回值等于3的节点。 解释:该二叉树的结构如下,2的后继节点是3。 2 / 1 3 代码 /...原创 2019-05-16 12:58:26 · 66 阅读 · 0 评论 -
剑指offer 6.重建二叉树
题目 输入一棵二叉树前序遍历和中序遍历的结果,请重建该二叉树。 注意: 二叉树中每个节点的值都互不相同; 输入的前序遍历和中序遍历一定合法; 样例 给定: 前序遍历是:[3, 9, 20, 15, 7] 中序遍历是:[9, 3, 15, 20, 7] 返回:[3, 9, 20, null, null, 15, 7, null, null, null, null] 返回的二叉树如下所示: 3 / ...原创 2019-05-16 12:17:24 · 52 阅读 · 0 评论 -
剑指offer 5.从尾到头打印链表
题目 输入一个链表的头结点,按照 从尾到头 的顺序返回节点的值。 返回的结果用数组存储。 样例 输入:[2, 3, 5] 返回:[5, 3, 2] /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) :...原创 2019-05-15 11:50:35 · 46 阅读 · 0 评论 -
剑指offer 4.替换空格
题目 请实现一个函数,把字符串中的每个空格替换成"%20"。 你可以假定输入字符串的长度最大是1000。 注意输出字符串的长度可能大于1000。 样例 输入:“We are happy.” 输出:“We%20are%20happy.” 代码 class Solution { public: string replaceSpaces(string &str) { str...原创 2019-05-15 11:33:47 · 50 阅读 · 0 评论 -
剑指offer 3.二维数组中的查找
题目 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。 请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 样例 输入数组: [ [1,2,8,9], [2,4,9,12], [4,7,10,13], [6,8,11,15] ] 如果输入查找数值为7,则返回true, 如果输入查找数值为5,则返回false。 思路 发现右上角的数...原创 2019-05-15 10:52:15 · 71 阅读 · 0 评论 -
剑指offer 2.不修改数组找出重复的数字
题目 给定一个长度为 n+1 的数组nums,数组中所有的数均在 1∼n 的范围内,其中 n≥1。 请找出数组中任意一个重复的数,但不能修改输入的数组。 样例 给定 nums = [2, 3, 5, 4, 3, 2, 6, 7]。 返回 2 或 3。 思考题:如果只能使用 O(1) 的额外空间,该怎么做呢? 思路 二分法 例如1,2,3,4,5,6,7,8,2这个数组,如果它含有重复数字,他有1-...原创 2019-05-15 10:24:22 · 90 阅读 · 0 评论 -
剑指offer 17.删除链表中重复的节点
在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留。 样例1 输入:1->2->3->3->4->4->5 输出:1->2->5 样例2 输入:1->1->1->2->3 输出:2->3 /** * Definition for singly-linked list. * struct L...原创 2019-05-17 00:38:42 · 47 阅读 · 0 评论