百度面试题

 

1、给一组数,其中只有一个数是重复了奇数次,其余都重复了偶数次,如何找出奇数次的那个数


异或运算,复杂度O(n)

 

int x = a[0];
for(int i = 1; i < a.leght; i++){
    x = x ^ a[i];
}

System.out.println(x);
 


2,上千万条记录,统计出重复记录最多的前N条

 
内存用Hash表
数据Select top 10 A from TB group by A order by(count(A))

 

数据结构中的hash表,不是java中的Hash表

key1 ------ v1,v2,v3

key2 ------ v1,v2,v3,v4

key3 ------ v1,v2

key4 ------ v1

 



3、一个N个整数的无序数组,给你一个数sum,求出数组中是否存在两个数,使他们的和为sum


Hash表,复杂度O(n)

 

Map<Integer,Integer> map = new HashMap<Integer,Integer>();
int sum = 65;
int key = 0;
for(int i = 0; i < a.length; i++){
    key = sum - a[i];
    map.put(a[i],a[i]);
    if(map.contain(key)){
        System.out.println(key + ":" + a[i]);
    }
}
 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值