leetcode-daily/2201/220102-CN.cpp

20 lines
388 B
C++

#include <iostream>
class Solution {
public:
// O(log(n))
static int lastRemaining(int n) {
// int cnt = 0, ret = 1;
int ret = 1, cnt = __builtin_clz(n) ^ 31;
// for (int i = n; i >>= 1; ++cnt);
for (int i = 0; i < cnt; ++i, n >>= 1)
ret += !(1 & i) || (1 & n) ? (1 << i) : 0;
return ret;
}
};
int main() {
std::printf("%d\n", Solution::lastRemaining(1));
return 0;
}