Re: [閒聊] 每日LeetCode

作者: HccrtZ (Violet)   2023-11-30 10:19:06
11/30
第i個bit要從1變成0的操作數為OPi
OPi = 1 + 2*OP(i-1)
把1000000變成0000000的過程中
路徑上的任一個bit n 若為1
就可以節省OPn
例:10001000 = OP8-OP4
但如果再多一個bit m為1
就要多費功把他變回0
例:10001001 = OP8-OP4+OP1
所以就一直加減加減OPi
最後取絕對值
class Solution {
public:
int minimumOneBitOperations(int n) {
int ope = 1;
int base = 1;
int ans = 0;
while(n != 0){
if(n%2 == 1){
ans += ope*base;
ope *= -1;
}
base = 1 + base*2;
n /= 2;
}
return abs(ans);
}
};
其實本來想不太到,列出來幾個才看出規律
感覺像考數字不是考程式2ㄏ
作者: a9486l (a9486l)   2022-11-30 10:19:00
大師
作者: nothink00 (線蟲)   2023-11-30 10:25:00
大師
作者: sustainer123 (caster)   2023-11-30 10:28:00
大師
作者: kerycheng (kk)   2023-11-30 10:30:00
你怎麼也開始每日leetcode了
作者: HccrtZ (Violet)   2023-11-30 10:31:00
上班沒事就會寫啊 今天的比較有趣紀錄一下
作者: wwndbk (黑人問號)   2023-11-30 10:32:00
大師
作者: ken890126 (靈魂奸商 路西法)   2023-11-30 10:39:00
大師
作者: ZooseWu (N5)   2023-11-30 11:22:00
怎麼又一個JAVA解題 你版剩我不會JAVA了嗎

Links booklink

Contact Us: admin [ a t ] ucptt.com