滴滴9.13笔试

岗位是安卓开发。由于不太会图相关的算法,所以都是用BFS解决的,运气好都A了。
第一题,修桥。
import java.util.*;

public class Q1_20200913 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int times = sc.nextInt();
        for (int o = 0; o < times; o++) {
            int n = sc.nextInt();
            int m = sc.nextInt();
            int limit = sc.nextInt();
            List<Integer>[] bridges = new List[n + 1];
            for (int i = 0; i < n + 1; i++) {
                bridges[i] = new LinkedList<>();
            }
            for (int i = 0; i < m; i++) {
                int l = sc.nextInt();
                int r = sc.nextInt();
                int cost = sc.nextInt();
                if (cost <= limit) {
                    bridges[l].add(r);
                    bridges[r].add(l);
                }
            }

            HashSet<Integer> arrived = new HashSet<>();
            Deque<Integer> list = new LinkedList<>(bridges[1]);
            while (!list.isEmpty()) {
                int cur = list.poll();
                arrived.add(cur);
                for (Integer i : bridges[cur]) {
                    if (!arrived.contains(i)) {
                        arrived.add(i);
                        list.add(i);
                    }
                }
            }

            if (arrived.size() == n) {
                System.out.println("Yes");
            } else {
                System.out.println("No");
            }
        }
    }
}

第二题,巴黎旅行。
import java.util.*;

public class Q2_20200913 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {
            int n = sc.nextInt();
            int m = sc.nextInt();
            List<int[]>[] ways = new List[n + 1];
            for (int i = 0; i < n + 1; i++) {
                ways[i] = new ArrayList<>();
            }
            for (int i = 0; i < m; i++) {
                int l = sc.nextInt();
                int r = sc.nextInt();
                int cost = sc.nextInt();
                int[] lr = {r, cost};
                ways[l].add(lr);
                int[] rl = {l, cost};
                ways[r].add(rl);
            }
            int start = sc.nextInt();
            int tar = sc.nextInt();
            String time = sc.next();

            int[] arrived = new int[n + 1];
            Arrays.fill(arrived, Integer.MAX_VALUE);
            Deque<int[]> list = new LinkedList<>();
            list.add(new int[]{start, 0});
            while (!list.isEmpty()) {
                int[] cur = list.poll();
                int pos = cur[0];
                int cost = cur[1];
                if (cost < arrived[pos]) {
                    arrived[pos] = cost;
                    for (int[] arr : ways[pos]) {
                        if (arr[1] + cost < arrived[arr[0]]) {
                            list.add(new int[]{arr[0], arr[1] + cost});
                        }
                    }
                }
            }
            int res = arrived[tar];
            String out = help(res, time);
            System.out.println(out);
        }
    }

    static int[] months = {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

    public static String help(int res, String time) {
        String[] temp = time.split("\\.");
        int month = Integer.parseInt(temp[0]);
        temp = temp[1].split("/");
        int day = Integer.parseInt(temp[0]);
        int hour = Integer.parseInt(temp[1]);

        hour += res;
        if (hour >= 24) {
            day += hour / 24;
            hour = hour % 24;
        }
        while (day > months[month]) {
            day -= months[month];
            month++;
        }
        StringBuilder arrive = new StringBuilder();
        arrive.append(month).append(".")
                .append(day).append("/").append(hour);

        return arrive.toString();
    }
}



#滴滴##笔试题目#
全部评论
兄弟笔试都没完,你就把答案贴出来了啊。。。不怕别人抄了雷同吗
点赞 回复 分享
发布于 2020-09-13 21:08
第一题就是去掉无效边,求图的连通数,可以套并查集模板,第二题直接最短路径算法
点赞 回复 分享
发布于 2020-09-13 21:07
大佬强呀
点赞 回复 分享
发布于 2020-09-13 21:04
枯了 
点赞 回复 分享
发布于 2020-09-13 20:59
大佬666,我算出最短路之前就没了
点赞 回复 分享
发布于 2020-09-13 20:58
第二题有python AC的吗?用python写dijkstra从来没AC过
点赞 回复 分享
发布于 2020-09-13 20:57
和算法一样,最后一题输出没时间搞完了,惨烈。就非要搞那个形式的输出干嘛...
点赞 回复 分享
发布于 2020-09-13 20:52
ios和安卓题居然不一样
点赞 回复 分享
发布于 2020-09-13 20:50

相关推荐

Vincent777...:实习经历可以考虑放上去,对于软件使用方面可以细化一些,比如调整为:熟悉基于LSDYNA的瞬态动力学仿真分析,熟悉基于WORKBENCH的结构拓扑优化
我的简历长这样
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-21 11:33
昨天是学校最后一场招聘会,鼠鼠去参加了,全场只有一个招聘java的岗位,上来先做一份笔试题,做完后他拿张纸对答案,然后开始问简历上的问题,深圳小厂,6-8k(题目如下),后面还有两轮面试。然后我就在招聘现场逛呀逛,看到有公司招聘电商运营,给的比上年的小厂还多,鼠鼠就去了解了下,然后hr跟鼠鼠要了份简历,虽然我的简历上面全是求职Java开发相关的内容,但是hr还是鼓励我说没关系,她帮我把简历给老板看看,下周一会给我通知。招聘会结束后鼠鼠想了一段时间,也和朋友聊了聊,发现我可能是不太适合这个方向,然后就跟爸爸说回家了给我发条微信,我有些话想跟他说说。晚上爸爸到家了,跟我发了条微信,我立马跑出图书馆跟他打起了电话,这个通话长达一个小时,主要是跟爸爸坦白说我不想找这行了,是你的儿子太没用了,想试试其他行业。然后爸爸也跟我说了很多,说他从来没有希望我毕业后就赚大钱的想法,找不到就回家去,回家了再慢慢找,实在找不到就跟他干(帮别人装修房子,个体户),他也知道工作不好找,让我不要那么焦虑,然后就是聊一些家常琐事。对于后面的求职者呢我有点建议想提一下,就是如果招实习的时间或者秋招开始,而你的简历又很差的情况下,不要说等做好项目填充完简历之后再投,那样就太晚了,建议先把熟悉的项目写上简历,然后边投边面边完善,求职是一个人进步的过程,本来就比别人慢,等到一切都准备好后再投岂不是黄花菜都凉了。时间够的话还是建议敲一遍代码,因为那样能让你加深一下对项目的理解,上面那些说法只是针对时间不够的情况。当然,这些建议可能没啥用,因为我只是一个loser,这些全是建立在我理想的情况下,有没有用还需其他人现身说法。上篇帖子没想到学校被人认了出来,为了不丢脸只能匿名处理了。
KPLACE:找研发类或技术类,主要还是要1.多投 2.多做准备,很多方面都要做准备 3.要有心理准备,投累了就休息一两天,再继续,要相信自己能找到
投递58到家等公司7个岗位
点赞 评论 收藏
分享
评论
2
13
分享

创作者周榜

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