記錄刷題的過程。牛客和力扣中都有相關題目,這裡以牛客的題目描述為主。該系列預設採用python語言。
1、問題描述:
輸入乙個整數,輸出該數二進位制表示中1的個數。其中負數用補碼表示。
2、資料結構:
位運算3、題解:
方法1:轉化為字串
# -*- coding:utf-8 -*-
class
solution
:def
numberof1
(self, n)
:# write code here
n =0xffffffff
& n count =
0for c in
str(
bin(n)):
if c ==
'1':
count +=
1return count
方法2:逐位判斷
# -*- coding:utf-8 -*-
class
solution
:def
numberof1
(self, n)
:# write code here
count =
0for i in
range(32
):m =
1<< i
if n & m !=0:
count +=
1return count
方法3:巧用n&(n-1)
# -*- coding:utf-8 -*-
class
solution
:def
numberof1
(self, n)
:# write code here
count =
0while n:
n = n &
(n -1)
count +=
1 n =
0xffffffff
& n return count
4、複雜度分析:
方法1:
時間複雜度:o(n)
空間複雜度:o(1)
方法2:
時間複雜度:o(logn)
空間複雜度:o(1)
方法3:
時間複雜度:o(n)
空間複雜度:o(1)
牛客劍指offer 1 10題解
在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。class solution else continue 記憶體集體向右移兩個位元組 並置 0前兩個位元組 v...
牛客 劍指offer系列題解 最小的K個數
記錄刷題的過程。牛客和力扣中都有相關題目,這裡以牛客的題目描述為主。該系列預設採用python語言。1 問題描述 輸入n個整數,找出其中最小的k個數。例如輸入4,5,1,6,2,7,3,8這8個數字,則最小的4個數字是1,2,3,4,2 資料結構 二叉樹,堆 3 題解 方法1 排序,取前k個數 co...
牛客 劍指offer系列題解 把陣列排成最小的數
記錄刷題的過程。牛客和力扣中都有相關題目,這裡以牛客的題目描述為主。該系列預設採用python語言。1 問題描述 輸入乙個正整數陣列,把陣列裡所有數字拼接起來排成乙個數,列印能拼接出的所有數字中最小的乙個。例如輸入陣列,則列印出這三個數字能排成的最小數字為321323。2 資料結構 陣列,字串,排序...