1. 程式人生 > >劍指offer十題刷

劍指offer十題刷

第一題

時間限制:1秒 空間限制:32768K 熱度指數:307615 本題知識點: 佇列 棧 題目描述 用兩個棧來實現一個佇列,完成佇列的Push和Pop操作。 佇列中的元素為int型別。

在這裡插入圖片描述

class Solution
{
public:
    void push(int node) {
        stack1.push(node);
    }

    int pop() {
        if(stack2.empty())
        {
            while(!stack1.empty())//stack2為空,應該把stack1的節點以次序全部出棧,再按照出棧順序依次入棧到stack2
{ stack2.push(stack1.top()); stack1.pop(); } } int p=stack2.top(); stack2.pop(); return p; } private: stack<int> stack1; stack<int> stack2; };

第二題

時間限制:1秒 空間限制:32768K 熱度指數:409354 題目描述 大家都知道斐波那契數列,現在要求輸入一個整數n,請你輸出斐波那契數列的第n項(從0開始,第0項為0)。 n<=39

1	1	2	3	5	8	13	21

如果採用遞迴方式則不符合要求的運算時間。

class Solution {
public:
    int Fibonacci(int n) {
        if(n<1)
            return 0;
        if(n<=2&&n>0)
            return 1;
        else
        {
            int first=1;
            int second=1;
            int index=0;
            for
(index=3;index<=n;index++) { int tmp=second; second=first+second; first=tmp; } return second; } } };

第三題

一隻青蛙一次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法(先後次序不同算不同的結果)。

青蛙跳1級臺階:只能有一種跳法; 2級臺階:可以是跳了兩次一級,也可以是一次跳了兩級——兩種跳法 3級臺階及其以上的n級臺階:可以是n-1級跳一級到n級,也可以是n-2級跳兩級到n級,所以,第n級臺階的跳法=(第n-1級臺階的跳法)*1+(第n-2級臺階的跳法)*1

class Solution {
public:
    int jumpFloor(int number) {
        if(number<=2)
            return number;
        else{
            int first=1;
           int second =2;
            for(int index=3;index<=number;++index)
            {
                int tmp=second;
                second=first+second;
                first=tmp;
            }
            return second;
        }
    }
};

第四題

一隻青蛙一次可以跳上1級臺階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上一個n級的臺階總共有多少種跳法。 青蛙跳一級有1種跳法=1 青蛙跳兩級有2種跳法=2 青蛙條三級有6種跳法=1+2+3

青蛙條四級有12種跳法=1+2+3+6 青蛙跳n級可以是從1到n-1的任意一級直接跳到n級,也可以是從n-1級

class Solution {
public:
    int jumpFloorII(int number) {
        if(number<=2)
            return number;
        else
        {
            int start=2;
            for(int index=3;index<=number;++index)
            {
                start=start*2;
            }
            return start;
        }
    }
};