LeetCode初級算法--其他01:位1的個數
一、引子
這是由LeetCode官方推出的的經典面試題目清單~
這個模塊對應的是探索的初級算法~旨在幫助入門算法。我們第一遍刷的是leetcode推薦的題目。
二、題目
編寫一個函數,輸入是一個無符號整數,返回其二進制表達式中數字位數為 ‘1’ 的個數(也被稱為漢明重量)。
示例1:
輸入:00000000000000000000000000001011
輸出:3
解釋:輸入的二進制串 00000000000000000000000000001011 中,共有三位為 '1'。
示例2:
輸入:00000000000000000000000010000000
輸出:1
解釋:輸入的二進制串 00000000000000000000000010000000 中,共有一位為 '1'。
示例3:
輸入:11111111111111111111111111111101
輸出:31
解釋:輸入的二進制串 11111111111111111111111111111101 中,共有 31 位為 '1'。
提示:
- 請注意,在某些語言(如 Java)中,沒有無符號整數類型。在這種情況下,輸入和輸出都將被指定為有符號整數類型,并且不應影響您的實現,因為無論整數是有符號的還是無符號的,其內部的二進制表示形式都是相同的。
- 在 Java 中,編譯器使用二進制補碼記法來表示有符號整數。因此,在上面的 示例 3 中,輸入表示有符號整數 -3。
進階:
如果多次調用這個函數,你將如何優化你的算法?
1、思路
提供三種解法,調用函數懶蛋法;手動循環計算 1 的個數;十進制轉二進制的方式。每次對 2 取余判斷是否是 1,是的話就 count = count + 1。詳情看代碼~
2、編程實現
class Solution(object):
def hammingWeight(self, n):
"""
:type n: int
:rtype: int
"""
#解法一:調用函數懶蛋法
return bin(n).count('1')
#解法二:手動循環計算 1 的個數。
# n = bin(n)
# count = 0
# for c in n:
# if c == "1":
# count += 1
# return count
#解法三:十進制轉二進制的方式。每次對 2 取余判斷是否是 1,是的話就 count = count + 1。
# count = 0
# while n:
# res = n % 2
# if res == 1:
# count += 1
# n //= 2
# return count
本文由博客一文多發平臺 OpenWrite 發布!
審核編輯 黃昊宇
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
人工智能
+關注
關注
1796文章
47791瀏覽量
240552 -
機器學習
+關注
關注
66文章
8446瀏覽量
133123 -
深度學習
+關注
關注
73文章
5518瀏覽量
121603 -
leetcode
+關注
關注
0文章
20瀏覽量
2342
發布評論請先 登錄
相關推薦
如何設置從屬OSERDESE1的其他5位?
:1數據串行器,我需要進行主從類型實現。主機獲取前6位數據,從機獲取最后一位。我的問題是,如何設置從屬OSERDESE1的其他5
發表于 03-28 14:41
怎么配置NRF24L01發送一個8位或者16位的數?
怎么配置NRF24L01 發送一個數(8位或者16位)?u8 NRF24L01_TxPacket(char *txbuf){u8 sta;S
發表于 04-26 06:41
新手如何有效的刷算法題(LeetCode)
一會在 LeetCode 題解區逛逛,一會在牛客網看看面經,結果就是整個人煩躁不安,焦慮迷茫,題沒有刷幾道,羨慕嫉妒恨卻增加了幾分:別人的代碼怎么這么簡潔 ?別人的 Offer 怎么這么亮眼?
![新手如何有效的刷<b class='flag-5'>算法</b>題(<b class='flag-5'>LeetCode</b>)](https://file.elecfans.com/web1/M00/BE/20/pIYBAF7XcceAJVHAAAAo6CO_2oA510.png)
LeetCode初級算法-其他02:有效的括號
搜索微信公眾號:'AI-ming3526'或者'計算機視覺這件小事' 獲取更多算法、機器學習干貨 csdn:[鏈接] csdn:[鏈接] github:[鏈接]
LeetCode初級算法-設計問題02:最小棧
搜索微信公眾號:'AI-ming3526'或者'計算機視覺這件小事' 獲取更多算法、機器學習干貨 csdn:[鏈接] csdn:[鏈接] github:[鏈接]
LeetCode初級算法-設計問題01:Shuffle an Array (打亂數組)
搜索微信公眾號:'AI-ming3526'或者'計算機視覺這件小事' 獲取更多算法、機器學習干貨 csdn:[鏈接] csdn:[鏈接] github:[鏈接]
LeetCode初級算法-動態規劃01:爬樓梯
搜索微信公眾號:'AI-ming3526'或者'計算機視覺這件小事' 獲取更多算法、機器學習干貨 csdn:[鏈接] csdn:[鏈接] github:[鏈接]
LeetCode初級算法-排序和搜索01:第一個錯誤的版本
搜索微信公眾號:'AI-ming3526'或者'計算機視覺這件小事' 獲取更多算法、機器學習干貨 csdn:[鏈接] csdn:[鏈接] github:[鏈接]
評論