1.最近公共祖先
/**
* 最近公共祖先
* 满二叉树 parent = a/2 &b/2
* 1.a=b 返回a
* 2.a!=b ,大的那个数再/2 直到 a=b
*/
public int getLCA(int a, int b) {
// write code here
while(a!=b){
if(a > b){
a/=2;
}else {
b/=2;
}
}
return a;
}
2.求最大连续bit数
/**
* 求最大连续bit数
* 1.用位运算转二进制 & >> 右移一位 直到右移完 为0 时 输出存储最大值
*/
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
int n = sc.nextInt();
int count = 0;
int modCount = 0;
while(n!= 0){
//3 -> 1011 101 10 1
// 0&1 =0 1&1 = 1 (&与运算:右移一位是否为1)连续则相加 否则为0
if((n&1)==1){
count ++;
modCount = Math.max(count,modCount);
}else {
count = 0;
}
//右移一位
n >>= 1;
}
System.out.println(modCount);
}