老虎证券 8.9 Java笔试 ak

老虎证券的笔试题,相对来说还是比较简单的,两道题都ac了(近期唯一一次)
第一题:

输入:
trips二维int数组,用于表示一组乘客的行程信息,其中`trip[i]`表示第i组乘客,`trip[i][0]`表示第i组乘客的乘客数量,`trip[i][1]`表示上车站点,`trip[i][2]`表示下车站点
capacity: int 类型,表示每辆车最多能承载多少名乘客

输出:
最少需要多少辆车可以满足乘客需求
思路:找出最小的上车站点和最大的下车站点,计算出在这个区间中,什么时候有最多的乘客在车上,找到这个最多乘客在车上的数量,除以capacity,再+1就ok了
代码:
public static int minCarCount (int[][] trips, int capacity) {
        // write code here
        Arrays.sort(trips, ((o1, o2) -> o1[1] - o2[1]));
        int k = 0;
        int start = trips[0][1];
        int end = trips[trips.length-1][2];
        for (int i = start; i < end; i++) {
            float x = i + 0.5f;
            int count = 0;
            for (int j = 0; j < trips.length; j++) {
                if (x > trips[j][1] && x < trips[j][2]) {
                    count += trips[j][0];
                }
            }
            k = Math.max(count, k);
        }
        return k/5+1;
    }
第二题:
输入:
x:int整型 需要完成的任务数量 level: int整型 初始等级
tasks: int整型二维数组 表示可供选择的任务,tasks[i][0]表示第i个任务所需的最低等级,task[i][1]表示第i个任务完成后能提升的等级 
要求:当前等级大于任务所需最低等级时,才能选择该任务
输出:
做完x个任务后能达到的最高等级
思路:
很明显的贪心,每次选择任务的时候,都尽量去选择可以获得等级最多的任务就ok了
代码:
public static int maxLevel (int x, int level, int[][] tasks) {
        // write code here
        if (x == 0) {
            return level;
        }
        Arrays.sort(tasks, (o1, o2) -> o1[0] - o2[0]);
        if (level < tasks[0][0]) {
            return level;
        }
        Arrays.sort(tasks, (o1, o2) -> o2[1] - o1[1]);
        HashSet<Integer> set = new HashSet<>();
        for (int i = 0; i < x; i++) {
            for (int j = 0; j < tasks.length; j++) {
                if (!set.contains(j) && level >= tasks[j][0]) {
                    level += tasks[j][1];
                    set.add(j);
                    break;
                } else if (set.contains(j)) {
                    continue;
                }
            }
        }
        return level;
    }



#笔试题目##老虎集团#
全部评论
第一题:1、遍历 trips,用 Map 记录乘客经过站点(i, j)时变化的人数(i 为正,j 为负) 2、遍历 Map 可得最大载客数量 sum 2、sum/capacity + (sum%capacity != 0) 为最终答案 时间:O(n+m),空间:O(m),m 为站点个数,n 为乘客组数 第二题:1)如果任务数量 x 不是很大,对任务所需等级进行桶排序,同时对对应提升等级进行累加合并,从左到右扫描桶即可 2)排序(任务所需等级升序,对应提升等级降序),扫描即可
点赞 回复 分享
发布于 2020-09-29 19:52
第一题死活没做出来 头疼。。。
点赞 回复 分享
发布于 2020-08-09 19:21

相关推荐

国央企银行:考完中行建行工行的笔试了马上要面中行信息运营科技中心,但网上貌似没有什么这家单位的信息啊?手机厂:华为主管挂了,可能因为我是北京场?跟我同一场的bg实在高攀不起荣耀入池,听说马上要开了互联网:能想到的基本都简历挂/一轮游了只有字节一个意向,但是客户端😢已死期间其实也拒了很多小中厂的offer和面试,包括不限于经纬恒润,广联达,老虎国际等…兜兜转转也忙了三个月了,索性大大小小几十场面试遇到的面试官都还算不错,最变态的是虾皮和同程,拷打了一个半小时网关然后给我挂了,真的变态,不过看他家风评也是烂的不行,作罢!反而跟家里的沟通是最大的代沟,父母总觉得央国企公务员稳定,体面,私企干个两三年就要被裁,但本人女友恰是帝都公务员,我的感受来讲就是牛马,是不分槽的。班是要加的,钱是没有的,所谓社会光环,是永远跟你没关系的,至少未来没有大晋升的十年,二十年,你是完全体会不到的。出学校第一步,认清普通人的水平,然后追赶,最后拥抱。只可惜生于繁花之时,成熟于凋零之际。公司未来怎么样,裁不裁员,业务好不好,方向对不对,不过是人生的一个又一个体验,我无数次刷牛客,小红书,就为了看这些信息,试图把我的未来窥探的一干二净,不过到头来只是熬了一个又一个没有意义的夜。普通人费尽心血要稳定,要体面,要高薪,每个人都在夸你活的无比正确与成功。就是没有人问你,今天开心吗?
投递中国银行等公司7个岗位
点赞 评论 收藏
分享
评论
3
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务