网易开发暑期实习笔试4.16

问答题:
(就是牛客的面试宝典!!!题目相似,不是原话)
假设目前有一千万个记录(这些查询串的重复度比较高,虽然总数是1千万,但如果除去重复后,不超过3百万个。一个查询串的重复度越高,说明查询它的用户越多,也就是越热门。),
请你统计最热门的10个查询串,要求使用的内存不能超过1G。

答:

问题解析:

要统计最热门查询,首先就是要统计每个Query出现的次数,然后根据统计结果,找出Top 10。所以我们可以基于这个思路分两步来设计该算法。

第一步:Query统计 
维护一个Key为Query,Value为该Query出现次数的HashTable,每次读取一个Query,如果该字串不在Table中,那么加入该字串,并且将Value值设为1;
如果该字串在Table中,那么将该字串的计数加一即可。最终我们在O(N)的时间复杂度内完成了对该海量数据的处理。
第二步:找出Top 10          (找出出现次数最多的10个)

维护一个K(该题目中是10)大小的小根堆,然后遍历300万的Query,分别和根元素进行对比。

总结:

先用Hash表统计每个Query出现的次数,O(N);然后第二步、采用堆数据结构找出Top 10,N*O(logK)。
所以,我们最终的时间复杂度是:O(N) + N‘*O(logK)。(N为1000万,N’为300万)。

算法题:
打印大小为N的O字母,长宽都为4n(大佬的答案)


只看了2个
一个区间的权值为区间内所有数的乘积末尾0的数量,求所有区间权值之和 (自己测了几个都是对的)
public class test1 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();
        int[] arr=new int[n];

        for(int i=0;i<n;i++){
            arr[i]=scan.nextInt();
        }

        int count=0;
        int res=0;
        int m;
        for(int i=0;i<n;i++){
            res=arr[i];
            if(res%10==0){
                while(res!=0){
                    m = res%10;//得到最后一位数字赋值给m
                    if(m==0){count++;}
                    else{ break; }
                    res = res/10;
                }
            }
        }
        int a=0;
        for(int i=0;i<n-1;i++){
            for(int j=i+1;j<n;j++){
                res=1;
                a=i;
                while(a<=j){
                    res*=arr[a];
                    a++;
                }
                if(res%10==0){
                    if(res%10==0){
                        while(res!=0){
                            m = res%10;//得到最后一位数字赋值给m
                            if(m==0){count++;}
                            else{ break;}
                            res = res/10;
                        }
                    }
                }
            }
        }
        System.out.println(count);
    }
}



#网易笔试##春招##实习##笔试题目##笔经##Java##校招#
全部评论
第二个必定超时。
1 回复 分享
发布于 2022-04-16 17:22
1e5的数据吧,O(N^2)必超时
点赞 回复 分享
发布于 2022-04-16 20:08
大佬面试宝典在哪看
点赞 回复 分享
发布于 2022-04-16 20:57

相关推荐

评论
2
22
分享

创作者周榜

更多
牛客网
牛客企业服务