您的位置:首页 > 产品设计 > UI/UE

Leetcode 232 Implement Queue using Stacks 和 231 Power of Two

2015-07-07 10:32 525 查看

1. 232 Implement Queue using Stacks

1.1 问题描述

  使用栈模拟实现队列。模拟实现如下操作:

  

push(x). 将元素x放入队尾。

pop(). 移除队首元素。

peek(). 获取队首元素。

empty(). 判断队列是否为空。

注意:只能使用栈的标准操作,push,pop,size和empty函数。

1.2 方法与思路

   本题和用队列实现栈思路一样,设两个辅助栈stk1和stk2。

   push(x): 将x入栈stk1.

   pop(): 依次将stk1中的元素pop到stk2中,只留最后一个pop掉,然后再将stk2中的元素pop到stk1中。

   peek(): 和pop操作类似,只不过最后一个元素不是pop,而是取值返回。

   empty(): 直接判断stk1是否为空即可。

class Queue {
    stack<int> stk1,stk2;
public:
    // Push element x to the back of queue.
    void push(int x) {
        stk1.push(x);
    }

    // Removes the element from in front of queue.
    void pop(void) {
        while(stk1.size() > 1)
        {
            stk2.push(stk1.top());
            stk1.pop();
        }
        if(stk1.size() == 1)
            stk1.pop();
        while(!stk2.empty())
            stk1.push(stk2.top()),stk2.pop();
    }

    // Get the front element.
    int peek(void) {
        int re;
        while(stk1.size() > 1)
        {
            stk2.push(stk1.top());
            stk1.pop();
        }
        if(stk1.size() == 1)
            re = stk1.top();

        while(!stk2.empty())
            stk1.push(stk2.top()),stk2.pop();

        return re;
    }

    // Return whether the queue is empty.
    bool empty(void) {
        return stk1.empty();
    }
};


2. 231 Power of Two

2.1 问题描述

  判断一个整数是不是2的幂次方。

2.2 思路与方法

  超简单的题目,题目给出的n最大为int的最大值,那么只需要遍历i从1到30依次计算2的i次方是不是数n即可。

  

class Solution {
public:
    bool isPowerOfTwo(int n) {
        for(int i=0; i < 31; i++)
        {
            if(pow(2,(double)i) == n) return true;
        }

        return false;
    }
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: