劍指offer題 輸出乙個整數二進位制表示中1的個數

2021-09-29 02:00:11 字數 431 閱讀 2551

剛拿到這題時感覺很簡單,結果最後被負數值求解給困擾了

方法1:

讓乙個數減去1,如果末尾是1的話,只有最後一位會變,相與,會讓這個數減少乙個1位,達到效果;如果末尾是0的話,從最右邊的1位開始到末尾,全部取反,也會減少乙個1位,所以也能達到效果。這種方法的好處就是能減少運算的次數。

方法2:

使用左移,因為右移會比較麻煩(不適合負數);

#includeusing namespace std;

//方法一

int method1(int m)

return s;

}//方法二

int method2(int m)

return s;

}int main()

return 0;

}

參考部落格:

劍指offer第二題

最直觀的做法是從頭往後開始掃瞄,但是這樣複雜度為o n 2 o n 的做法是從後往前開始複製和替換。先求出替換後的字串大小,然後用兩個指標 index 從後往前複製,如果遇上空格,直接替換為 20 public class solution int oldindex str.length 1 int...

劍指offer第二題

請實現乙個函式,將乙個字串中的空格替換成 20 例如,當字串為 則經過替換之後的字串為 分析 考場陣列的操作,主要是從頭到尾的操作要消耗o n 複雜度,如果完成插值,則為o n2 所以要從尾部倒過來轉移。注意 本題有兩點要考慮。其一,注意錯誤的返回值為return,而不是return false。其...

劍指offer 簡單題 一

因為這幾題太簡單了,總結一下思路就行了。知識點 陣列 其實就是for迴圈加個判斷條件。牛客上有人呼叫了一些大數之類的api,感覺沒啥必要。為了ac可以,面試的時候這樣是真的秀逗了。給定乙個陣列a 0,1,n 1 請構建乙個陣列b 0,1,n 1 其中b中的元素b i a 0 a 1 a i 1 a ...