通過leetcode學習位運算及其Go實現

2021-09-14 05:41:40 字數 571 閱讀 9081

461. hamming distance

即求兩個正整數的二進位制對應位數不同的個數

從問題描述來看,最直觀的解決方法就是十進位制數先轉成二進位制,再比對相同位數是否相同,不同則計數器累加,最終計數器的值即是hamming distance

優化方案:先^運算,對運算結果的位數進行遍歷,1則計數器累計

基於這個思想,需要用到的有異或運算位運算

異或運算法則:相同為零,不同為一。

異或非運算法則:相同為一,不同為零。

即:

輸入a: 1 0 1 0

輸入b: 1 1 0 0

異或運算結果: 0 1 1 0

異或非(同或)運算結果:1 0 0 1

左移

右移

func hammingdistance(x int, y int) int 

return counter

}

LeetCode之位運算

public intadd int a,int b return a 劍指offer 64 求1 2 n 難度 中等 求 1 2 n 要求不能使用乘除法 for while if else switch case等關鍵字及條件判斷語句 a?b c 題解 用遞迴的方法的 public intsumnu...

leetcode 快速冪運算(位運算)

題目描述 實現函式double power double base,int exponent 求base的exponent次方。不得使用庫函式,同時不需要考慮大數問題。實現 def mypow self,x float,n int float if x 0 return 0 res 1 if n 0...

LeetCode 位運算 位1的個數

編寫乙個函式,輸入是乙個無符號整數,返回其二進位制表示式中數字位數為 1 的個數 也被稱為漢明重量 示例 輸入 00000000000000000000000000001011 輸出 3 解釋 輸入的二進位制串 00000000000000000000000000001011 中,共有三位為 1 輸...