Description Given a binary array, find the maximum number of consecutive 1s in this array. 給定一個二進制數(shù)組,找出這個數(shù)組中最大的連續(xù)1的個數(shù)
public class Solution { public int findMaxConsecutiveOnes(int[] nums) { int maxNumber = 0,number = 0; int len = nums.length; //遇0則變0,遇1則加1 for(int i = 0;i < len; i++){ if(nums[i] == 0){ number = 0; } else{ number++; if(maxNumber < number) maxNumber = number; } } return maxNumber; }}public class Solution { public int findMaxConsecutiveOnes(int[] nums) { int maxNumber = 0,number = 0; int len = nums.length; //遇1則加1,遇0則變0 for(int i = 0;i < len; i++){ if(nums[i] == 1){ number ++; } else{ if(number > maxNumber){ maxNumber = number; } number = 0; } } //注意num[len - 1]如果是1的話沒有執(zhí)行給maxNumber賦值的語句 if(number >maxNumber){ maxNumber = number; } return maxNumber; }}Description The Hamming distance between two integers is the number of positions at which the corresponding bits are different. 給定兩個整數(shù),求其對應(yīng)二進制位上是不同數(shù)字的個數(shù)。
public int hammingDistance(int x, int y) { int distance = 0; int k = x ^ y; //調(diào)用Integer類中的bitcount方法求一個整數(shù)的二進制中1的個數(shù) distance = Integer.bitCount(k); return distance; }public int hammingDistance(int x, int y) { int distance = 0; int k = x ^ y; System.out.PRintln(k); while(k != 0){ //和1相與,結(jié)果為1則最低位為1,結(jié)果為0則最低位為0 if( (k & 1) == 1) distance ++; k = k >> 1;//右移 } return distance;}//逐位異或public int hammingDistance(int x, int y) { int distance = 0; while(x !=0 || y!=0){ if(((x & 1) ^ (y & 1)) == 1){ distance ++; } x = x >> 1; y = y >> 1; } return distance; } //(借鑒)利用遞歸 public int hammingDistance(int x, int y) { if((x ^ y) == 0) return 0; return (x ^ y) % 2 + hammingDistance(x >> 1, y >> 1); }感想:1. 二進制位運算要充分利用二進制運算符,~,&,|,^(異或,相同為0,不同為1) 2. 巧妙利用遞歸簡化代碼
新聞熱點
疑難解答