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