精華區beta Marginalman 關於我們 聯絡資訊
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ㄏ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.140.131.92 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1701310748.A.BD3.html
a9486l: 大師 11/30 10:19
nothink00: 大師 11/30 10:25
sustainer123: 大師 11/30 10:28
kerycheng: 你怎麼也開始每日leetcode了 11/30 10:30
HccrtZ: 上班沒事就會寫啊 今天的比較有趣紀錄一下 11/30 10:31
wwndbk: 大師 11/30 10:32
ken890126: 大師 11/30 10:39
ZooseWu: 怎麼又一個JAVA解題 你版剩我不會JAVA了嗎 11/30 11:22