每日一题11-最近的公共祖先-最大的连续bit数

  1. 下面哪个标识符是合法的?
    A “9HelloWorld”
    B “_Hello World”
    C “Hello*World”
    D “Hello$World”

    【答案】:D
    java的变量名有三种元素构成:数字+字母+$+下划线。并且不能以数字开头+不能是关键字

  2. 以下描述正确的是
    A CallableStatement是PreparedStatement的父接口
    B PreparedStatement是CallableStatement的父接口
    C CallableStatement是Statement的父接口
    D PreparedStatement是Statement的父接口
    【答案】:B
    【解析】:public interface CallableStatement extends PreparedStatement {}
    public interface PreparedStatement extends Statement {}
    PreparedStatement是用来执行SQL查询语句的API之一,Java提供了 Statement、PreparedStatement 和 CallableStatement三种方式来执行查询语句,其中 Statement 用于通用查询, PreparedStatement 用于执行参数化查询,而 CallableStatement则是用于存储过程。

  3. 下列关于容器集合类的说法正确的是?
    A LinkedList继承自List
    B AbstractSet继承自Set
    C HashSet继承自AbstractSet
    D WeakMap继承自HashMap
    【答案】:C
    【解析】:A.LinkedList是继承自AbstractSequentialList(抽象类,实现了List接口)的,并且实现了List接口。所以A错误。
    public class LinkedList
    extends AbstractSequentialList
    implements List, Deque, Cloneable, java.io.Serializable{}
    B.AbstractSet是实现了Set接口的,本身是一个抽象类。继承自AbstractCollection(抽象类,实现了Collection接口)。所以B错误。
    public abstract class AbstractSet extends AbstractCollection implements Set {}
    C.HashSet是继承自AbstractSet,实现了Set接口。所以C正确。
    public class HashSet
    extends AbstractSet
    implements Set, Cloneable, java.io.Serializable{}
    D.WeakMap不存在于java集合框架的。只有一个叫做WeakHashMap(继承自AbstractMap)。
    public class WeakHashMap<K,V>
    extends AbstractMap<K,V>
    implements Map<K,V>
    4. ArrayList list = new ArrayList(20);中的list扩充几次 (A)
    A 0
    B 1
    C 2
    D 3
    【解析】:ArrayList list=new ArrayList(); 这种是默认创建大小为10的数组,每次扩容大小为1.5倍
    ArrayList list=new ArrayList(20); 这种是指定数组大小的创建,创建时直接分配其大小,没有扩充。所以,扩充为0次。

  4. 下列关于Java并发的说法中正确的是()
    A CopyOnWriteArrayList适用于写多读少的并发场景
    B ReadWriteLock适用于读多写少的并发场景
    C ConcurrentHashMap的写操作不需要加锁,读操作需要加锁
    D 只要在定义int类型的成员变量i的时候加上volatile关键字,那么多线程并发执行i++这样的操作的时候就是线程安全的了
    【答案】:B
    【解析】:1.CopyOnWirteArrayList 适用于写少读多的并发场景
    2.ReadWriteLock 即为读写锁,在读多写少的情况下可以提高效率。
    3.ConcurrentHashMap是同步的HashMap,读写都加锁
    4.volatile只保证多线程操作的可见性,不保证原子性

  5. 【最近的公共祖先】
    将一棵无穷大满二叉树的结点按根结点一层一层地从左往右编号,根结点编号为1。现给定a,b为两个结点。设计一个算法,返回a、b最近的公共祖先的编号。注意其祖先也可能是结点本身。
    例如:输入2,3 返回1
    【解析】
    题目所描述的满二叉树如下:
    1
    /
    2 3
    / \ /
    4 5 6 7
    上述树中子节点与父节点之间的关系为root =child / 2所以如果a!= b,就让其中的较大数除以2,如此循环直到a == b即是原来两个数的最近公共祖先

public class LCA {
    public int getLCA(int a, int b) {
        // write code here
        while(a!=b){
            if(a>b){
                a = a/2;
            }
            if(b>a){
                b = b/2;
            }
        }
        
        return a;
    }
}
  1. 【最大连续的bit数】
    求一个byte数字对应的二进制数字中1的最大连续数,例如3的二进制为00000011,最大连续2个1
    本题含有多组样例输入。
    【解析】:肯定是用位运算了,一边右移一边统计,不断更新count和max。
import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner scan = new Scanner(System.in);
        while(scan.hasNext()){
        int num = scan.nextInt();
        int mod =0;
        int count = 0;
        while(num!=0){
            if(num%2 == 1){
                count++;
                mod = Math.max(mod,count);
            }else{
                count = 0;
            }
            num = num/2;
        }
        System.out.println(mod);
        }
    }
}
public class Main{
    public static void main(String[] args){
        Scanner scan = new Scanner(System.in);
        while(scan.hasNext()){
        int num = scan.nextInt();
        int mod =0;
        int count = 0;
        while(num!=0){
            if(num%2 == 1){
                count++;
                mod = Math.max(mod,count);
            }else{
                count = 0;
            }
            num = num>>1;
        }
        System.out.println(mod);
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值