leetcode初级算法 设计问题

设计问题

    • shuffle an array
    • 最小栈

shuffle an array

直接copy了别人的代码,用了库函数random_shuffle(iterator1,iterator2)
代码:

class Solution {
public:
    vector  m_nums;

    Solution(vector nums) : m_nums(nums){

    }

    /** Resets the array to its original configuration and return it. */
    vector reset() {
        return m_nums;
    }

    /** Returns a random shuffling of the array. */
    vector shuffle() {
        vector temp(m_nums);
        random_shuffle(temp.begin(),temp.end());
        return temp;
    }
};

最小栈

也是copy的代码,需要好好理解。
来一个,如果符合比目前最小的更小,就入min。
出栈的时候,如果不是目前最小,就一般出,否则min也出。
AC代码:

class MinStack {
public:
    /** initialize your data structure here. */
    MinStack() {
    }
    
    void push(int x) {
        s.push(x);
        if(min.empty()||min.top()>=x)
            min.push(x);
    }
    
    void pop() {
        if(min.top()==s.top())
            min.pop();
         s.pop();
    }
    
    int top() {
        return s.top();
    }
    
    int getMin() {
        return min.top();
    }
    private:
    stack s;
        stack min;
};

你可能感兴趣的:(leetcode算法题目,leetcode初级算法)