【劍指offer】二進位制中1的個數(java)
問題描述:輸入一個二進位制數,我們記為num,計算出num中有幾個1,結果用count儲存
思路分析:如二進位制數11011,將其減1,得11010,再與原來的數做與運算 11011&11010,得11010,此二進位制數相比原二進位制數,數中的1少了一個。重複此過程,直至該數變為0,則結束迴圈。
java程式碼實現:
/** * Created by Administrator on 2018/11/21. */ public class Solution { public static int NumberOf1(int n) { int count=0; while(n!=0){ int n_=n-1; n=n&n_; count++; } return count; } public static void main(String args[]){ int n=17; System.out.println(NumberOf1(n)); } }
輸出結果:
相關推薦
【劍指offer】二進位制中1的個數(java)
問題描述:輸入一個二進位制數,我們記為num,計算出num中有幾個1,結果用count儲存 思路分析:如二進位制數11011,將其減1,得11010,再與原來的數做與運算 11011&11010,得11010,此二進位制數相比原二進位制數,數中的1少了一個。重複此過程,直至該數變為0
【劍指Offer】二進位制中1的個數
題目描述 輸入一個整數,輸出該數二進位制表示中1的個數。其中負數用補碼錶示。 補碼 解題前,我們先來了解一下補碼。在計算機系統中,數值都是用補碼來表示和儲存的。 而原碼就是數值的二進位制數表示,最高位1表示負數。 以32位數值舉例 1的原碼就是 -1的原碼就是 正數的補碼等於原碼 負數的補碼等於其原碼
【劍指offer】整數中1出現的次數(從1到n整數中1出現的次數)
題目描述 求出1~13的整數中1出現的次數,並算出100~1300的整數中1出現的次數?為此他特別數了一下1~13中包含1的數字有1、10、11、12、13因此共出現6次,但是對於後面問題他就沒轍了。ACMer希望你們幫幫他,並把問題更加普遍化,可以很快的求出任意非負整數區間中1出現的次數(從1
【劍指offer】整數中1出現的次數
題目描述:親們!!我們的外國友人YZ這幾天總是睡不好,初中奧數裡有一個題目一直困擾著他,特此他向JOBDU發來求助信,希望親們能幫幫他。問題是:求出1~13的整數中1出現的次數,並算出100~1300的整數中1出現的次數?為此他特別數了一下1~13中包含1的數字有1、10、1
【劍指offer】矩陣中的路徑(回溯法)
# -*- coding:utf-8 -*- class Solution: def hasPathCore(self, matrix, rows, cols, row, col, path,
【劍指offer】43、1~n整數中1出現的次數
ase 表示 eight pre pub 題目 我們 return 1出現的次數 題目 輸入一個整數,求1~n的整數十進制表示中1出現的次數。如12,有1,10,11,12,總共出現了5次。 思路 註意不是統計出現1的數字的多少,而是統計1出現了幾次。 我們按位來分析 個位
【劍指offer】無聊的1+2+...+n
乘除 detail lin targe while http off 技術分享 i++ 轉載請註明出處:http://blog.csdn.net/ns_code/article/details/27964027題目描寫敘述:求1+2+3+...+n,要求不能使用乘除法、f
【劍指offer】圓圈中最後剩下的數字,C++實現
一行 AC 個人 ron namespace itl i++ float color 原創博文,轉載請註明出處! # 題目 # 思路 本題即為典型的約瑟夫問題,通過遞推公式解決。 第一行表示每個人的下標,現在要從11個人中刪除報數為3的人,從圖
【劍指offer】序列中的某一位數字
題目描述 數字以01234567891011121314…的格式序列化到一個字元序列中,在這個序列中,從0開始數,第5位是5,第13位是1,第19位是4,等等,請寫一個函式,求任意第n位對應的數字。 求出每一位對應的數字總和,然後判斷。注意邊界條件不好處理時,可以採用while true
【劍指offer】陣列中的逆序對(校正書上錯誤)【歸併排序】
題目描述 在陣列中的兩個數字,如果前面一個數字大於後面的數字,則這兩個數字組成一個逆序對。輸入一個數組,求出這個陣列中的逆序對的總數P。並將P對1000000007取模的結果輸出。 即輸出P%1000000007 題目保證輸入的陣列中沒有的相同的數字 資料範圍:
劍指offer:二進位制中1的個數
試題: 輸入一個整數,輸出該數二進位制表示中1的個數。其中負數用補碼錶示。 程式碼: 簡單方法,對於正數,每次通過與操作比較最後一位,比較完以後向右移動一位。直到數值為0終止移位。這裡有個問題就是負數的移位操作一般會產生高位補1的情況,因此我們最後能先把負數轉成正數
劍指offer(11)二進位制中1的個數
題目描述 輸入一個整數,輸出該數二進位制表示中1的個數。其中負數用補碼錶示。 解題思路 一個數,自身和自身減一與運算,會將右邊最後一個不為1的變為0,一直迴圈,直到變為0; class Solution { public: int NumberOf1(int n) {
【劍指offer】陣列中只出現一次的數字
remove:刪除特定元素第一次出現的時候,返回的是刪除後的陣列 del:刪除指定索引的元素 del a[2],返回的是刪除後的陣列 pop:刪除指定索引的元素,返回的是刪除的元素 有一個問題就是我不知道判斷not in list 的時候O(n)的複雜度會不會影響 執
【劍指Offer】陣列中重複的數字
題目連結 題目描述 在一個長度為n的數組裡的所有數字都在0到n-1的範圍內。 陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意一個重複的數字。 例如,如
劍指offer 11 二進位制中1的個數
題目描述 輸入一個整數,輸出該數二進位制表示中1的個數。其中負數用補碼錶示。 本題思路:n = n&(n-1) 對於n-1的二進位制而言,其值為原來的n的二進位制的最後一個1變0,後面的0全部變
劍指offer 12. 二進位制中1的個數
原題 輸入一個整數,輸出該數二進位制表示中1的個數。其中負數用補碼錶示。 My solution (Wrong) # -*- coding:utf-8 -*- class Solution: def NumberOf1(self, n):
劍指offer 14. 二進位制中1的個數
輸入一個整數,輸出該數二進位制表示中1的個數。 例如,將9表示為二進位制是1001,有2位是1,因此,如果輸入為9,輸出應當為2。 樣例 輸入:9 輸出:2 這道題需要考慮負數,負數為補碼 法1: class Solution { public:
【劍指offer】陣列中出現次數超過陣列長度一半的數字(三種解法)
題目描述 陣列中有一個數字出現的次數超過陣列長度的一半,請找出這個數字。例如輸入一個長度為9的陣列{1,2,3,2,2,2,5,4,2}。由於數字2在陣列中出現了5次,超過陣列長度的一半,因此輸出2。如果不存在則輸出0。 如果使用時間複雜度為O(n),可以構建
[劍指Offer] 15_二進位制中1的個數
題目 面試題15:二進位制中1的個數 題目:實現一個函式,輸入一個整數,輸出該數二級製表示中1的個數。 例: 把9表示成二進位制是1001,有2位是1。因此如果輸入9,則該函式輸出2。 思路 最直接的思路:從低位開始向高位逐一比較是否為1, 並計數。
劍指Offer-Python-二進位制中1的個數
題目 輸入一個整數,輸出該數二進位制表示中1的個數。其中負數用補碼錶示。 思路: 暴力解決:分為兩種情況:一種整數n>=0,直接化為二進位制.一種n<0,求其補碼。其中求補碼的方法為將其用原碼錶示,然後從右邊第一個為‘1’的數起往左依次