《剑指Offer》刷题【C++版】
之所以开专栏并不是自己水平多高,而是为了更好的管理自己的博客以及刷题。本人也是小菜一枚,希望从现在开始刷题和打比赛能够为秋招积累更多的知识基础。共勉!
att0206
C/C++、Qt、ISP、图像处理(增强、降噪)、Opencv、ncnn、机器学习、深度学习、边缘计算、arm算法优化等领域,望能跟共同志向者一同学习交流!
展开
-
《剑指Offer》之跳台阶
题目描述: 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。 分析:本题可以用普通的递归来解,但是会超时,所以可以用能过存储数据的DP来解决,状态转移方程为: 注:本系列都在牛客网在线编程通过,并且在本地VS2015编译通过; DP[j] = DP[j-1]+DP[j-2] 同时用一个容器来存储这些数据即可,时间复杂度...原创 2018-08-24 13:25:20 · 158 阅读 · 0 评论 -
《剑指Offer》之从上往下打印二叉树
题目描述: 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 思路: 这题类似于层次打印,只需要用到一个队列,依次输入顶点以及左结点和又结点依次进队的顺序即可; 注: 本系列全部在牛客网上在线编程通过,并且在本地VS2015上编译通过; 代码如下: #include<iostream> #include<vector> #include<q...原创 2018-08-24 18:47:44 · 210 阅读 · 0 评论 -
《剑指Offer》之链表中倒数第k个结点
题目描述: 输入一个链表,输出该链表中倒数第k个结点。 思路分析: 由于是要找到倒数第k个结点,而链表又不可以直接索引,因此,引入栈存储各个链表的结点,利用栈的反序功能,然后只需要返回第k个结点就可以了; 本题中需注意: unsigned int 和int的转换 k的值不能等于0或者大于链表的总长度 链表为空 有点小坑,注意的地方大体就是上面的几个地方,毕竟提交了几次每次都只是部分...原创 2018-08-22 13:34:37 · 125 阅读 · 0 评论 -
《剑指Offer》之调整数组顺序使得基数在偶数前面
题目描述; 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 注:本系列例程均在牛客网在线编程编译通过,并且在VS2015中编译通过; 思路分析: 主要采用的是两个vector容器来存放在遍历数组的时候分别将基数和偶数放到其中一个容器中;这样时间代价为O(n); 代...原创 2018-08-20 20:55:59 · 157 阅读 · 0 评论 -
《剑指Offer》之两个栈实现一个队列的push()与top()方法
题目描述: 用两个栈来实现一个队列,完成push()和top()功能; 注:本系列程序都是在牛客网上进行编写测试通过,并且在VS2015环境下进行测试通过; 思路解读: 主要是将stack1作为主栈,将stack2作为辅栈,stack1作为push()压入队列的主要栈操作,如果是pop()弹出队列,则用stack2不断的接收stack1.top()栈顶的元素,压入栈中,这样直到把sta...原创 2018-08-19 14:33:53 · 732 阅读 · 0 评论 -
《剑指Offer》之旋转数组的最小数字
题目描述: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 注:本系列都是在牛客网在线编程测试通过,并且在VS2015上编译通过; 思路分析; 这题还是相对很简单...原创 2018-08-19 15:20:17 · 153 阅读 · 0 评论 -
《剑指Offer》之Fibonacci
题目描述; 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。 n<=39 注:本系列全部在牛客网在线编程测试通过,并且在VS2015编译通过; 思路解析: 看到这题,是不是大家都觉得一个递归几行代码就搞定了 class Solution { public: int Fibonacci(int n) { ...原创 2018-08-19 16:10:56 · 130 阅读 · 0 评论 -
《剑指Offer》之二进制中1的个数
题目描述; 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 注:本系列全部通过牛客网在线编译通过,并且在VS2015上也编译通过; #include<iostream> using namespace std; class Solution { public: int NumberOf1(int n) { int num = 0;...原创 2018-08-19 16:28:34 · 158 阅读 · 0 评论 -
《剑指Offer》之数值的整数次方
题目描述 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。 注:本系列全部在牛客网上进行在线测试通过,并且在VS2015上编译通过; 思路解析: 本题还是属于easy 类题,主要需要考虑几个特殊情况: base为0的情况 exponent为0情况 exponent小于0 等三种情况。 代码如下所示: #inc...原创 2018-08-19 16:52:27 · 164 阅读 · 0 评论 -
《剑指Offer》之字符串替换空格
//题目描述 //请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 注: 本专栏里面的核心代码都是在牛客网剑指Offer在线测试通过,并且在VS2015环境下测试通过! 代码如下所示: #include<iostream> using namespace std; ...原创 2018-08-17 13:11:05 · 138 阅读 · 0 评论 -
《剑指Offer》之从尾到头打印链表
题目描述: 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。 注:本系列均在牛客网的剑指Offer在线测试调试通过,并且在VS2015中编译通过; 代码如下所示: #include<stack> #include<vector> using namespace std; struct ListNode { int val; ...原创 2018-08-17 13:47:12 · 126 阅读 · 0 评论 -
《剑指Offer》之反转链表并返回头指针
描述: 输入一个链表,反转这个链表,并输出反转后链表的头指针; 注:本核心代码都是在牛客网在线编程中进行测试通过,并且在VS2015上进行编译通过; 代码如下所示: #include<iostream> #include<vector> using namespace std; struct ListNode { int val; stru...原创 2018-08-18 21:31:19 · 340 阅读 · 0 评论 -
《剑指Offer》之滑动窗口的最大值
题目描述: 给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组 {2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为 {4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3...原创 2018-08-18 15:58:31 · 114 阅读 · 0 评论