前兩天DP都不會,版上有推薦是先寫75裡面的dp部分還是leetcode dp標籤的題目嗎
題目:
476. Number Complement
給一個數字num,求他的無號補數
思路:
可以很直觀用數學的方式知道這個補數會是pow(2,num的binary長度)-1-num,如果
是用bitwise的角度去看是對每一個bit做nand 1,由於是無號的所以先對num做not運算
再每一個位元對1做and
int findComplement(int num) {
int g=num;
int y=0;
while(num){
y=(y<<1)|1;
num>>=1;
}
return ~g&y;
}