Friday, September 20, 2019

Leetcode 950: Reveal Cards In Increasing Order

https://leetcode.com/problems/reveal-cards-in-increasing-order/description/



Notes:

This question is a very interesting one. After thinking for a while, it turns out that we need to start with the last one (or the biggest). After figuring this out, it is easy to code.

See the code below:

class Solution {
public:
    vector<int> deckRevealedIncreasing(vector<int>& deck) {
        if(deck.size() < 2) return deck;
        list<int> res;
        sort(deck.begin(), deck.end());
        int len = deck.size(), cur = len-1;
        res.push_back(deck[cur]);
        while(res.size() < len - 1) {
            res.push_front(deck[--cur]);
            res.push_front(res.back());
            res.pop_back();
        }
        res.push_front(deck[--cur]);
        return vector<int>(res.begin(), res.end());
    }
};

No comments:

Post a Comment