解題思路:
除了模擬,沒有任何想法,腦子屬實是干的
看來題解,發現模擬也不行,時間復雜度超了
仔細研究了官方給的題解,自己復述了一遍:

class Solution {
public:
int lastRemaining(int n) {
int a1 = 1, an = n;
int k = 0, cnt = n, step = 1;
while (cnt > 1) {
if (k % 2 == 1) {
a1 = (cnt % 2 == 1) ? a1 + step: a1;
an = an - step;
} else {
a1 = a1 + step;
an = (cnt % 2 == 1) ? an - step: an;
}
++k;
cnt = cnt>>1;
step = step<<1;
}
return a1;
}
};
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/401574.html
標籤:其他
上一篇:程式員面試中注意事項
下一篇:藍橋杯 方格計數
