劍指offer十題刷
阿新 • • 發佈:2018-12-12
第一題
時間限制: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;
}
}
};