求父节点:父节点 = 孩子节点/2
(1)输入a ,b 如果a==b,表示ab的公共祖先就是ab本身
(2)如果ab不相同,循环while哪个大,哪个除以2,直到相同为止
import java.util.*;
public class LCA {
public int getLCA(int a, int b) {
// write code here
while(a != b){
if(a > b){
a/=2;
}else{
b/=2;
}
}
return a;
}
}
该题的解题思路
(1) 任何不为0的数按位与1,结果都是1,也就是最低为是1
所以,二进制数,看最低位,让n&1,如果n&1等于1,就代表最低位为1,就计数count++
接着让n右移1,更新n的最低位为倒数第二位,接着循环上述代码,如果为0,count清空,同时记录下count清空前的结果
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while(in.hasNext()){
int n = in.nextInt();
int count = 0;
int modCount = 0;
while(n != 0){
if((n & 1) == 1){
count++;
modCount = Math.max(count,modCount);
}else{
count = 0;
}
n >>= 1;
}
System.out.println(modCount);
}
}
}
//一些考点
1.标识符:开头不能是数字,不能有空格,不能有*号,可有$符
2.Map -》键值对 -》key-value
key和value可以为null
如果put两次,在第二次put中,key与第一次put相同,就相当于操作第一个键值对,如果value不同会被覆盖,这时map里只有一个值,不是两个值
3.Statement > PrepareStatement > CallableStatement (>表示父类关系)
4.重载
(1)函数名必须相同
(2)返回值可相同可不相同
(3)必须有不同的形参列表:个数同类型排列不同/个数不同
5.接口是实现,不是继承
(1)LinkedList实现List接口
(2)AbstractSet实现Set接口
(3)HashSet继承自AbstractSet
(4)WeakHashMap继承自HashMap
6.ArrayList list = new ArrayList(20)
new的时候带参数,有object数组传了大小为20的数组,并没有扩充;如果new的时候不带参数,容量大小默认为10,当add到第11个元素时,会以数组1.5倍扩充
7.
8. switch
没有break,就会一直往下滑动执行语句
9.
(1)java.sql:提供java存取数据库的包
(2)java.swing:包含swing组件
(3)java.awt:抽象窗口工具包
(4)java.lang:包含基本包装类和String类