智力题总结

1. 对于一个整数数组,只有一个数字有1个,其他都是2个,并且相同的数是相邻的,如何找出只有一个的那个数的位置?时间复杂度log n

2. 函数foo()概率p输出1,概率1-p输出0,等概率输出0和1?

3. 十亿个数,找前 100 个,用什么算法,时间复杂度是多少?

4. 给定包含n个元素的数组,n小于等于10^5。有q次询问,每次询问给定两个值k和x,k小于等于10^5 ,q小于等于10^5。每次询问需要在前k个元素中找到第一个比x大的元素(从左到右遍历第一个)。

5. 怎么使用1到5的随机选择器实现1到7的随机选择器

6. 一个圆形, 12-0点, 12点是飞机场, 飞机满油能飞半圈12-6, 能顺、逆时针飞, 保证所有飞机都能飞回飞机场, 飞机之间能互相加油, 问至少多少辆飞机可以让一台飞机飞满一圈

7. 140g的盐 各有2g和7g的砝码 只能用三次天平,如何称出50g 和 90 g

8. 给你一个数,每次可以进行加或减2的n次方操作,最少多少次操作把该数变为0?

9. 电脑磁盘文件中有一组数字,范围是 0 到 2^31-1 ,正常每个数字仅出现一次且无序。因数据问题丢失了一个数字,现电脑内存只有 2G 或 4G ,如何找出丢失的这个数字?

10. 64匹马8个跑道需要多少轮才能挑选出最快的4匹马?(每次比赛只有名次,不记录时间)

11. 3L和5L的杯子怎么量出来4L的水
全部评论
再m
点赞 回复 分享
发布于 03-08 02:11 四川

相关推荐

02-14 00:25
中南大学 Java
题目如图这题我觉得最好就是用对k二分来做,但是我总是过不了测试用例,牛客上的那测试用例老长一串又复制不了,有没有大佬帮我看下代码哪里有问题呀?感激不尽!!代码如下:public class Main {    public static void main(String[] args) {        Scanner in = new Scanner(System.in);        int n=in.nextInt(),m=in.nextInt();        TreeSet<Integer> set=new TreeSet<>();        in.nextLine();        String wall=in.nextLine();        for(int i=0;i<n;i++) {            if(wall.charAt(i)=='W') set.add(i);        }        if(set.ceiling(0)==null) System.out.print(0);        int left=-1,right=n+1;        while(left+1<right) {            int mid=(left+right)/2;            if(check(set,mid,m)) right=mid;            else left=mid;        }        System.out.print(right);    }    public static boolean check(TreeSet<Integer> set,int k,int m) {        int idx=set.ceiling(0);        for(int i=0;i<m;i++) {            idx+=k;            if(set.ceiling(idx)==null) return true;        }        return false;    }}
点赞 评论 收藏
分享
评论
3
20
分享

创作者周榜

更多
牛客网
牛客企业服务