Posted on

Description

Submission

class Solution {
public:
    int lastRemaining(int n) {
        bool isFromLeft = true;   // is from left
        int left = 1;
        int remain = n;
        int step = 1;

        while(remain > 1) {
            if(isFromLeft || remain % 2 == 1) {
                left += step;
            }
            step = step << 1;
            remain = remain >> 1;
            isFromLeft = !isFromLeft;
        }

        return left;
    }
};

References

Leave a Reply

Your email address will not be published. Required fields are marked *