剑指Offer_编程题

5、用两个栈实现队列

时间限制:1秒 空间限制:32768K 热度指数:466923

本题知识点: 队列 栈

题目描述:

用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。

思路:用一个栈push,另一个栈分情况,1.空,将s1所有的元素放入弹出一个,2.非空,弹出一个。

class Solution
{
public:void push(int node) {stack1.push(node);}int pop() {if(!stack2.empty()){int u=stack2.top();stack2.pop();return u;}else{while(!stack1.empty()){stack2.push(stack1.top());stack1.pop();}if(!stack2.empty()){int u=stack2.top();stack2.pop();return u;}else return NULL;}}private:stack<int> stack1;stack<int> stack2;
};

6、旋转数组的最小数字(O(n) + 二分O(lgn))

时间限制:3秒 空间限制:32768K 热度指数:655052

本题知识点: 查找 数组

题目描述:

把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。

思路:耍赖写法??sort 输出,不过sort复杂度O(nlogn)。直接找的话O(n)

sort O(nlogn)  (emmmm)

class Solution {
public:int minNumberInRotateArray(vector<int> rotateArray) {if(rotateArray.size()==0) return 0;sort(rotateArray.begin(),rotateArray.end());return rotateArray[0];}
};

 直接找 O(n)

class Solution {
public:int minNumberInRotateArray(vector<int> rotateArray) {if(rotateArray.size()==0) return 0;int len=rotateArray.size();for(int i=0;i<len-1;i++){if(rotateArray[i]<=rotateArray[i+1])continue;else return rotateArray[i+1];}return rotateArray[0];}
};

二分O(lgn) 瞎搞搞搞出来了,因为非减序列就会有一些重复的值,这里有点麻烦,就是感觉好像这样可以,然后调调调出来了。

class Solution {
public:int minNumberInRotateArray(vector<int> rotateArray) {int len=rotateArray.size();if(len==0) return 0;int l=0,r=len-1;while(l<r){int mid=(l+r)/2;if(rotateArray[l]<=rotateArray[mid]) l=mid+1;else r=mid-1;}int ans=min(rotateArray[l],rotateArray[r]);int le=0,ri=len-1;while(le<ri){int mid=(le+ri)/2;//cout<<le<<" "<<mid<<" "<<ri<<endl;if(rotateArray[ri]>=rotateArray[mid]) ri=mid;else le=mid+1;}ans=min(ans,min(rotateArray[le],rotateArray[ri]));return ans;}
};

7、斐波那契数列

时间限制:1秒 空间限制:32768K 热度指数:596140

本题知识点: 递归

题目描述:

大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。

n<=39

思路:没啥,n挺小的

class Solution {
public:int Fibonacci(int n) {long long f[3];f[0]=0,f[1]=1;f[2]=1;if(n<=2) return f[n]; for(int i=3;i<=n;i++)f[i%3]=f[(i-1)%3]+f[(i-2)%3];return f[n%3];}
};

8、跳台阶

时间限制:1秒 空间限制:32768K 热度指数:455201

本题知识点: 递归

题目描述:

一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。

思路:同上 f(n)=f(n-1)+f(n-2)  ;  n=1 ans=1;n=2 ans=2;

class Solution {
public:long long f(int num){if(num==1) return 1;if(num==2) return 2;return f(num-1)+f(num-2);}int jumpFloor(int number) {long long ans=f(number);return ans;}
};

剑指Offer_编程题(用两个栈实现队列/旋转数组的最小数字(O(n) + 二分O(lgn))/斐波那契数列/跳台阶)相关推荐

  1. 牛客网 c++ 剑指Offer_编程题 第五题用两个栈实现队列

    前言: 牛客网 c++ 剑指Offer_编程题 第五题用两个栈实现队列 题目: **这个题目不难,但是我感觉题目出得奇怪,刚开始没理解要干啥 我一个队列就能实现他要的功能为啥要两个 队列 queue ...

  2. 剑指offer系列-09.用两个栈设计队列

    剑指offer系列第09题.用两个栈设计队列 用两个栈实现一个队列.队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead , 分别完成在队列尾部插入整数和在队列头部删除整 ...

  3. 41【C#】斐波那契(Fibonacci)数列的第一个和第二个数分别为1和1 从第三个数开始,每个数等于其前两个数之和(1,1,2,3...)编写一个程序输出斐波那契数列中的前20个数,

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  4. 剑指Offer对答如流系列 - 用两个栈实现队列

    面试题8:用两个栈实现队列 一.题目描述 用两个栈实现一个队列.队列的声明如下,请实现它的两个函数appendTail和deleteHead,分别完成在队列尾部插入结点和在队列头部删除结点的功能. 二 ...

  5. 编程题练习 两个栈实现队列

    两个栈实现队列 1.判断队列为空: 当栈s1 和 s2都为空时,那么队列为空 2.入队操作: 直接将数据加入到s1栈中 3.出队操作:当 s2 栈不为空的时候, s2 栈直接执行出栈操作就可以得到出队 ...

  6. 剑指offter-面试题7.用两个栈实现队列

    题目.用两个栈实现一个队列.队列的声明如下,请实现它的两个函数appendTail和deleteHead分别完成在对尾插入节点和在队头删除节点. 该队列类模板如下: 1 template <ty ...

  7. 剑指Offer_编程题_22

    题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序 ...

  8. 剑指Offer_编程题 不用加减乘除做加法

    不用加减乘除做加法 时间限制:1秒 空间限制:32768K 热度指数:81997 算法知识视频讲解 题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. 首先,十进 ...

  9. 【Java】剑指Offer_编程题_机器人的运动范围

    题目链接:https://www.nowcoder.com/questionTerminal/6e5207314b5241fb83f2329e89fdecc8 题目描述 地上有一个m行和n列的方格.一 ...

  10. 剑指Offer_编程题09:变态跳台阶

    题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级--它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 牛客网:链接 我们使用数学归纳法不难发现,跳法f(n)=2^(n-1). # -* ...

最新文章

  1. Android开发问题集锦
  2. 字节跳动Java高级工程师:java队列实现停车场出入
  3. python【蓝桥杯vip练习题库】ADV-290成绩排序
  4. linux技术工程师,LINUX系统工程师技术(Engineer)-------第四天
  5. MATLAB编程经典程序 素数的判断,求0~100素数之和
  6. undefined reference to `cv::VideoCapture::VideoCapture()'
  7. python3 批量定义多个变量_Python3 基本数据类型详解
  8. MongoDB的查询语法和SQL的SELECT语法做对比
  9. oracle协议适配器错误tns,ORA-12560: TNS: 协议适配器错误 常见原因
  10. loadrunner——关联
  11. 使用Screaming Frog SEO Spider 如何查找断开的链接
  12. pcshare远控软件编译过程
  13. DMS专线联通外网测试
  14. 代理模式(委托模式)— 结构型
  15. 修改主分区表给U盘分区
  16. React innerHTML
  17. Spring Boot 集成 Elasticsearch
  18. PVTV2--Pyramid Vision TransformerV2学习笔记
  19. 计算机DVD驱动禁用怎么恢复,win7电脑中的DVD驱动无法打开怎么办?
  20. Unity 升级版本后Shader导致崩溃

热门文章

  1. sklearn学习——递归特征消除法(RFE)
  2. python爬取公众号
  3. 我该如何带好你—我的团队
  4. 12.第十三章.合同管理
  5. 官网版本的windows pe系统启动盘制作过程
  6. cad图纸问号怎么转换文字_CAD中文图纸中文字体变成问号怎么办?不慌这几步教你轻松解决...
  7. Rayman的绝顶之路——Leetcode每日一题打卡9
  8. abs链目前在哪个平台_ABS链怎么样?
  9. echarts、dataV 数据可视化大屏
  10. php三级分销思路 数据库设计_微信分销相关的数据表结构设计