1. 程式人生 > 其它 >LeetCode0338-計算數字對應二進位制中1的數目

LeetCode0338-計算數字對應二進位制中1的數目

//給定一個非負整數 num。對於 0 ≤ i ≤ num 範圍中的每個數字 i ,計算其二進位制數中的 1 的數目並將它們作為陣列返回。

//方法一:對於所有的數字,只有兩類:
//
//奇數:二進位制表示中,奇數一定比前面那個偶數多一個 1,因為多的就是最低位的 1。
//偶數:二進位制表示中,偶數中 1 的個數一定和除以 2 之後的那個數一樣多。因為最低位是 0,除以 2 就是右移一位,也就是把那個 0 抹掉而已,所以 1 的個數是不變的。
//
//作者:duadua
//連結:https://leetcode-cn.com/problems/counting-bits/solution/hen-qing-xi-de-si-lu-by-duadua/
//來源:力扣(LeetCode) //著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。 public class Num338_countBits { public static int[] countBits(int n) { int[] result = new int[n+1]; result[0]=0; for (int i =1;i<n+1;i++){ if(i%2==0){ result[i]=result[i/2]; }
if(i%2!=0){ result[i]=result[i-1]+1; } } return result; } //方法二:java的Integer有自帶的方法Integer.bitCount,可以統計出每個數字對應二進位制中1的個數 public static int[] countBits2(int n){ int[] result = new int[n+1]; for(int i=0;i<n+1;i++){ result[i]
= Integer.bitCount(i); System.out.println(result[i]); } return result; } public static void main(String[] args) { int n =2; countBits(2); countBits2(5); } }