![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
剑指offer_编程题
yitau
这个作者很懒,什么都没留下…
展开
-
剑指offer_重建二叉树
题目要求时间限制:1秒 空间限制:32768K题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。代码实现利用递归的思想,生成左子树前序遍历序列和中序遍历序列及左子树前序遍历序列和中序遍历序列。/...原创 2019-03-19 22:29:53 · 103 阅读 · 0 评论 -
剑指offer_链表中的倒数第k个结点
题目要求时间限制:1秒 空间限制:32768K本题知识点: 链表题目描述输入一个链表,输出该链表中倒数第k个结点。实现分析考虑边界条件:k=0、链表为空、链表结点数少于k……实现很简单,两个指针,前面的指针比后面的快k。代码如下:/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : ...原创 2019-03-23 14:23:20 · 101 阅读 · 0 评论 -
剑指offer_调整数组顺序
题目要求时间限制:1秒 空间限制:32768K本题知识点: 数组题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。实现思路解法一首先想到的是利用两个辅助数组,一个保存奇数,一个保存偶数,这样的解法空间复杂度为O(n),时间复杂度为O(n)。代码如下:clas...原创 2019-03-23 14:03:12 · 162 阅读 · 0 评论 -
剑指offer_从头到尾打印链表
题目要求时间限制:1秒 空间限制:32768K本题知识点: 链表题目描述输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。代码思路利用两个指针pre,next始终指向head的前、后。/*** struct ListNode {* int val;* struct ListNode *next;* ListNode(i...原创 2019-03-19 09:39:32 · 149 阅读 · 0 评论 -
剑指offer_二维数组的查找
题目要求时间限制:1秒 空间限制:32768K 热度指数:1003109本题知识点: 查找题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。代码实现class Solution {public: bool Find(int ta...原创 2019-03-18 19:56:07 · 154 阅读 · 0 评论 -
剑指offer_替换空格
题目要求时间限制:1秒 空间限制:32768K本题知识点: 字符串题目描述请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。代码实现先计算出新的字符串长度,然后从后往前替换class Solution {public: void replaceSpace(char *str...原创 2019-03-18 20:40:48 · 99 阅读 · 0 评论 -
剑指offer_二进制中1的个数
题目要求时间限制:1秒 空间限制:32768K题目描述输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。分析实现这道题看起来比较简单,直观来看将n直接右移即可,如下:class Solution {public: int NumberOf1(int n) { int count = 0; while(n) ...原创 2019-03-21 21:10:50 · 101 阅读 · 0 评论 -
剑指offer_矩形覆盖
题目要求时间限制:1秒 空间限制:32768K题目描述我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?分析实现画一下图,不难发现,依旧为递推式:f(n)=f(n-1)+f(n-2)代码如下:class Solution {public: int rectCover(int number) { ...原创 2019-03-21 20:48:27 · 111 阅读 · 0 评论 -
剑指offer_变态跳台阶
题目要求时间限制:1秒 空间限制:32768K题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。代码实现与上一题的跳台阶不同,这次青蛙可以随意跳多少级台阶,但是依旧是个递推式的问题。上一题见:https://blog.csdn.net/weixin_43856921/article/details/88700920递...原创 2019-03-20 21:57:22 · 316 阅读 · 0 评论 -
剑指offer_跳台阶
题目要求时间限制:1秒 空间限制:32768K题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。代码实现就是一个简单的递推式,而且是斐波那契数列,思路分析请见博主的上一篇文章:https://blog.csdn.net/weixin_43856921/article/details/88700678代码如下:...原创 2019-03-20 21:44:38 · 125 阅读 · 0 评论 -
剑指offer_斐波那契数列
题目要求时间限制:1秒 空间限制:32768K题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39代码思路题目很简单,可以直接用递归实现,代码也很简洁,只有两三行,如下:class Solution {public: int Fibonacci(int n) { if(n<2)r...原创 2019-03-20 21:35:59 · 140 阅读 · 0 评论 -
剑指offer_旋转数组的最小数字
题目要求时间限制:3秒 空间限制:32768K本题知识点: 查找算法知识视频讲解题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。代码思路直接查找O(n...原创 2019-03-20 20:57:05 · 92 阅读 · 0 评论 -
剑指offer_用两个栈实现队列
题目要求时间限制:1秒 空间限制:32768K本题知识点: 队列 栈题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。代码实现两个栈:stack1当作入栈、stack2当作出栈。Pop操作考虑出栈是否为空,如果为空,就要将入栈的元素全部“倒入”到出栈里面,这样能保证队列的顺序。class Solution{public: voi...原创 2019-03-19 22:56:40 · 112 阅读 · 0 评论 -
剑指offer_整数中1出现的次数
题目描述求出1到13的整数中1出现的次数,并算出100到1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。分析引用自牛客网我画张表如下:当n = 3141592时:...原创 2019-05-03 21:39:23 · 76 阅读 · 0 评论