携程4月1日笔试编程题部分代码

题目忘了拍了。。。大家找一找网上应该有的
第一题暴力O(N^2)超时,只过了40%,蹲一波大佬们的AC代码。
第二题二维dp过了88%,显示,WA不知道哪里有问题,代码如下:
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int n = Integer.parseInt(sc.nextLine());
        int m = Integer.parseInt(sc.nextLine());
        int p = Integer.parseInt(sc.nextLine());
        Set<Integer> birth = new HashSet<>();
        for(int i = 0;i < p;i++){
            birth.add(Integer.parseInt(sc.nextLine()));
        }
        int x = Integer.parseInt(sc.nextLine());
        int[][] dp = new int[x + 1][m + 1];
        dp[0][0] = n;
        for(int i = 1;i <= x;i++){
            if(dp[i][m] > 0){
                dp[i][m] -= dp[i - m - 1][0];
            }
            for(int j = 1;j <= m;j++){
                dp[i][j] += dp[i - 1][j - 1];
                if(birth.contains(j)) {
                    dp[i][0] += dp[i][j];
                }
            }

        }
        int res = 0;
        for(int i = 0;i <= m;i++){
            res += dp[x][i];
        }
        System.out.println(res);
    }
}
第三题编辑距离问题,牛客有原题,本来以为会很复杂,结果直接遍历字典就AC了。。。
public class Main {
    public static void main(String[] args){
        String[] d = {"surprise", "happy", "ctrip", "travel", "wellcome","student","system","program","editor"};
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            String str = sc.nextLine();
            boolean flag = true;
            for(String s : d){
                if(change(str,s) <= 2){
                    System.out.println(s);
                    flag = false;
                    break;
                }
            }
            if(flag){
                System.out.println("null");
            }
        }
    }
    private static int change(String s1,String s2){
        int[][] dp = new int[s1.length()][s2.length()];
        for(int i = 0;i < s1.length();i++){
            dp[i][0] = i;
        }
        for(int i = 0;i < s2.length();i++){
            dp[0][i] = i;
        }
        for(int i = 1;i < s1.length();i++){
            for(int j = 1;j < s2.length();j++){
                dp[i][j] = Math.min(dp[i - 1][j] + 1,
                        Math.min(dp[i][j - 1] + 1,
                                dp[i - 1][j - 1] + (s1.charAt(i) == s2.charAt(j) ? 0 : 1)));
            }
        }
        return dp[s1.length() - 1][s2.length() - 1];
    }
}
感觉我就这水平了,希望有个面试吧



#携程#
全部评论
楼主过了吗,我a了两道半没过
点赞 回复 分享
发布于 2020-04-09 21:32
借楼,请问大家这种解法是否可行?     public static int dfsSolution(int n, int m, int[] birthYear, int x){         if(birthYear==null || birthYear.length==0)             return x>m?0:n;         //for later O(1) find         HashSet<Integer> set=new HashSet<>();         for(int b: birthYear){             set.add(b);         }         return dfs(n,m,set,0,0, x);     }     public static int dfs(int n, int m, HashSet<Integer> set, int cur_year, int age, int x){         if(cur_year>=x) {             if(age<=m){                 return set.contains(age)?2*n:n;             }             return 0;         }         if(age>m)             return 0;         //if it is in the birth year         if(set.contains(age)){             //这一批海豚今年会生n个宝宝,从0岁开始算.另开一个分支计算             return dfs(n,m,set,cur_year+1,age+1, x)+dfs(n,m,set, cur_year+1,1,x);         }         return dfs(n,m,set,cur_year+1,age+1, x);     }
点赞 回复 分享
发布于 2020-04-02 03:34
第三题牛客原题目名是啥?
点赞 回复 分享
发布于 2020-04-01 21:36
海豚那个是long吧
点赞 回复 分享
发布于 2020-04-01 21:06
第一道用string确实会超时,但把string还成stringbuilder就能ac
点赞 回复 分享
发布于 2020-04-01 21:06
第一题leetcode253会议室II
点赞 回复 分享
发布于 2020-04-01 21:05
题目很简单,本地也都能过,每次我都死在调试赛码输入输出上面,一拿到上面就不能过,我真的是佛
点赞 回复 分享
发布于 2020-04-01 21:04

相关推荐

bg双非本科,方向是嵌入式。这次秋招一共拿到了&nbsp;8&nbsp;个&nbsp;offer,最高年包&nbsp;40w,中间也有一段在海康的实习经历,还有几次国家级竞赛。写这篇不是想证明什么,只是想把自己走过的这条路,尽量讲清楚一点,给同样背景的人一个参考。一、我一开始也很迷茫刚决定走嵌入式的时候,其实并没有一个特别清晰的规划。网上的信息很零散,有人说一定要懂底层,有人说项目更重要,也有人建议直接转方向。很多时候都是在怀疑:1.自己这种背景到底有没有机会2.现在学的东西到底有没有用3.是不是已经开始晚了这些问题,我当时一个都没答案。二、现在回头看,我主要做对了这几件事第一,方向尽早确定,但不把自己锁死。我比较早就确定了嵌入式这个大方向,但具体做哪一块,是在项目、竞赛和实习中慢慢调整的,而不是一开始就给自己下结论。第二,用项目和竞赛去“证明能力”,而不是堆技术名词。我不会刻意追求学得多全面,而是确保自己参与的每个项目,都能讲清楚:我负责了什么、遇到了什么问题、最后是怎么解决的。第三,尽早接触真实的工程环境。在海康实习的那段时间,对我触动挺大的。我开始意识到,企业更看重的是代码结构、逻辑清晰度,以及你能不能把事情说清楚,而不只是会不会某个知识点。第四,把秋招当成一个需要长期迭代的过程。简历不是一次写完的,面试表现也不是一次就到位的。我会在每次面试后复盘哪些问题没答好,再针对性补。三、我踩过的一些坑现在看也挺典型的:1.一开始在底层细节上纠结太久,投入产出比不高2.做过项目,但前期不会总结,导致面试表达吃亏3.早期有点害怕面试,准备不充分就去投这些弯路走过之后,才慢慢找到节奏。四、给和我背景相似的人一点建议如果你也是双非,准备走嵌入式,我觉得有几件事挺重要的:1.不用等“准备得差不多了”再投2.项目一定要能讲清楚,而不是做完就算3.不要只盯着技术,多关注表达和逻辑很多时候,差的不是能力,而是呈现方式。五、写在最后这篇总结不是标准答案,只是我个人的一次复盘。后面我会陆续把自己在嵌入式学习、竞赛、实习和秋招中的一些真实经验拆开来讲,希望能对后来的人有点帮助。如果你正好也在这条路上,希望你能少走一点弯路。
x_y_z1:蹲个后续
点赞 评论 收藏
分享
2025-12-02 02:15
门头沟学院
最近菊厂陆续开了,极力劝退那些拿13级的985硕士,就13级那么点儿薪资,一线城市每个月到手1.8/7/6w,租房2k还是破烂,吃饭2k还是预制菜,买个1k衣服都是聚酯纤维破塑料,稍微出去浪一浪,能留1w就是万岁,要是再有个啥都想买的对象,一线工作一年难存10w。隔壁工地混泥土,钳工,焊工一天800+,还包吃包住。读书18年到985硕士出来就为了进厂螺丝工?还不如从8岁童工开始干活,别人读书完了你工龄18+,混不上领导也是个小头头了。当然专科进来正式工,od都行,一般本科进来13级也OK,毕竟22岁年纪摆在那个地方还不需要太花钱。读硕博的基本26岁,工作两年就要结婚的,兜里没几个崽,连彩礼都要信用贷。菊厂离职的不少,毕竟正常没人受得了9116(梗:再来一次911刷6)。为啥这时候劝?因为刚下班,因为国考刚完,省考下周,就是可惜选调只有当年应届能报。现在回想能拍断大腿。应届生真实好身份,错过这一次,选调,考公,考编,当老师,进医院,研究所,高校,央国企,基本都无缘了,就连报名资格都被剥夺了,可谓是被党和国家遗弃的废材,统称“社会上的”,扔到社会去流浪,被用坏了就扔医院,长期超负载使用,零件修不好基本可以扔火里回炉重造了。体制内奉行找体制内的,都是党和国家选的人才,智力不差,样貌不丑,身材端正,收入稳定,安居房政策福利待遇也OK。因公出行都是报销,周末顺带“游山玩水“,这种体制内单身资源但凡想找对象,去社会上随便吆喝一声都排队。观察一下,基本没什么公务员在相亲,因为早就被邻里邻居抢光了。
哈哈哈,你是老六:就这不去的人大把人干呢,现在不缺人干活,你不干大把干呢,还有那个说农民工赚钱的,那个800+我估计肯定也就那一段时间,哪有这么赚钱,还是一句话,要想存下钱必须花销极低,能省的就不花钱,工资要高点
点赞 评论 收藏
分享
评论
1
5
分享

创作者周榜

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