顛倒給定的 32 位無符號整數的二進位制位。
示例:
輸入:43261596輸出:964176192解釋:43261596 的二進位制表示形式為00000010100101000001111010011100,高階:返回 964176192,其二進位制表示形式為00111001011110000010100101000000。
如果多次呼叫這個函式,你將如何優化你的演算法?
思路一:將數 n 與 1 進行 & 運算,得到末尾的數字,並且存入陣列中,進行 32 次。然後將陣列中的數字換成 十進位制,這裡要注意的是可能會溢位,要使用 long ,最後強制轉型為 int。
public class solution
for(int k = 31;k >= 0;k--)
return (int)sum;
}}
思路二:不使用另外的陣列儲存每一次的結果,使用 r 即可。用 n & 1 得到 數 n 的末尾數字,然後將他與 r 進行或運算,最後將 r 右移 32 - i 位即可。>> 有符號數右移,>>> 無符號數右移。
public class solution
return r << (32 - i);
}}
leetcode190 顛倒二進位制
思想 定義變數ans儲存反轉之後的二進位制數,預設是全0。變數mask是1,若mask與n相與為真,則n的二進位制形式最後一位為1,此時ans需要和1或,使得當前為二進位制為1,反之ans不變即為0。n不斷左移 左移的目的是去除最後一位二進位制數 直到結束。class solution param ...
LeetCode190 顛倒二進位制位
顛倒給定的 32 位無符號整數的二進位制位。示例 輸入 43261596輸出 964176192解釋 43261596 的二進位制表示形式為00000010100101000001111010011100,返回 964176192,其二進位制表示形式為001110010111100000101001...
LeetCode 190 顛倒二進位制位
顛倒給定的 32 位無符號整數的二進位制位。示例 1 輸入 00000010100101000001111010011100輸出 00111001011110000010100101000000解釋 輸入的二進位制串00000010100101000001111010011100表示無符號整數432...