华为od机试

第一道:身高体重 排序 
import java.util.*;
public class test {

    static class Stu{
    public int ind;
    public int h;
    public int m;
    Stu(int ind,int h,int m){
        this.ind=ind;
        this.h=h;
        this.m=m;
    }
}

    public static void main(String[] args) {


        Scanner in = new Scanner(System.in);
        int n = Integer.parseInt(in.nextLine());
        String [] h = in.nextLine().split(" ");
        String [] m = in.nextLine().split(" ");
        List<Stu> list = new ArrayList<>(n);
        if (n==h.length&&n==m.length){
            for (int i = 1; i <=n ; i++) {
                list.add(new Stu(i,Integer.parseInt(h[i-1]),Integer.parseInt(m[i-1])));
            }
        }
        list.sort((a,b)->{
            int i=a.h-b.h;
            if (i==0){
                i=a.m-b.m;
            }
            return i ;
        });
        for (int i=0;i<list.size();i++) {
            System.out.print(list.get(i).ind);
            if (i!=list.size()-1){
                System.out.print(" ");
            }
        }
    }
}


第二道:缺勤打卡 滑动窗口计数 (这个题 给的用例过了自己测了几个都是可行的,提交后为0,我为了50%的通过 就吧处理方法注释掉了,等于逻辑没有实现直接判定为真,有50%,但是不知道问题所在,有点搞不懂是不是环境什么原因,求教。 #华为OD# #华为od# #华为笔试# ) 
public class Main {
    public static void main(String[] args) {
        List<String> inS = new ArrayList<>();
        Scanner in = new Scanner(System.in);
        int n = Integer.parseInt(in.nextLine());
        int m = n;
        while (m > 0) {
            inS.add(in.nextLine());
            m--;
        }
        if (n == inS.size() && n > 0) {
            for (int i = 0; i < inS.size(); i++) {
                String[] s = inS.get(i).split(" ");
                if (fun(s)) {
                    System.out.print("true");
                } else {
                    System.out.print("false");
                }
                if (i != inS.size() - 1) {
                    System.out.print(" ");
                }
            }
        }
    }

    static boolean fun(String[] sArray) {
//        for (String s : sArray) {
//            if ("absent".equals(s)) {
//                return false;
//            }
//        }
//        for (int i = 0; i < sArray.length; i++) {
//            if (("late".equals(sArray[i]) || "leaveearly".equals(sArray[i]))) {
//                if (i < sArray.length - 1 && ("late".equals(sArray[i + 1]) || "leaveearly".equals(sArray[i + 1]))) {
//                    return false;
//                }
//            }
//        }
//        if (sArray.length <= 7) {
//            for (String s : sArray) {
//                int count = 0;
//                if (!"present".equals(s)) {
//                    count++;
//                }
//                if (count > 2) {
//                    return false;
//                }
//            }
//        } else {
//            for (int j = 0; j <= sArray.length - 7; j++) {
//                for (int i = j; i < j + 7; i++) {
//                    int count = 0;
//                    if (!"present".equals(sArray[i])) {
//                        count++;
//                    }
//                    if (count > 2) {
//                        return false;
//                    }
//                }
//            }
//
//        }
        return true;
    }

}



第三道:书本叠加 动态规划最优解 
import java.util.*;
public class Main {

    static class Book{
       int c;
       int k;
       Book(int c,int k){
           this.c=c;
           this.k=k;
       }
   }

    public static void main(String[] args) {


        Scanner in = new Scanner(System.in);
        String s = in.nextLine();
        s=s.replaceAll("\\[","");
        s=s.replaceAll("]","");
        String [] str=s.split(",");
        if (str.length>0){
            List<Book> list=new ArrayList<>(str.length/2);
            for (int i=0;i<str.length/2;i++){
                new Book(Integer.parseInt(str[i*2]),Integer.parseInt(str[i*2+1]));
            }
            list.sort((a,b)->{
                int i=a.c-b.c;
                if (i==0){
                    i=a.k-b.k;
                }
                return i;
            });
            int [] dp =new int[s.length()/2];
            dp[0]=1;
            for (int i=1;i<list.size();i++){
                for (int j = 0; j <i ; j++) {
                    if (list.get(i).k>list.get(j).k&&list.get(i).c>list.get(j).c){
                        dp[i]=Math.max(dp[i],dp[j]+1);
                    }
                }
            }
            int max=dp[0];
            for (int i: dp) {
                if (i>max){
                    max=i;
                }
            }
            System.out.println(max);
        }

    }

}






#华为OD机考##华为od机试##华为od##华为OD##西安#
全部评论
请问除了第二题其他都100%过了吗?
点赞 回复 分享
发布于 2022-09-11 15:44 广东
祝楼主拿到心仪的offer~有想了解od的同学可以私信我哦~可捞可咨询
点赞 回复 分享
发布于 2022-09-07 10:32 广东
ntu去od吗
点赞 回复 分享
发布于 2022-09-04 18:02 河南
点赞 回复 分享
发布于 2022-09-04 16:27 河北

相关推荐

2025-12-08 16:04
门头沟学院 Java
本人本科末9,今年大三。大一大二一直玩,什么都没学到,在大学混日子混了两年,每天不是在打农就是在steam。大三开学时一个和自己玩的好的同学去实习了,才发现自己白白浪费了两年的时间,如果真不冲一下就真去京东,阿里,美团送外卖了今年9月份开始学Java,一开始一直跟着黑马视频看,后面发现看视频效率太低了,时间根本不够,就开始主要看文档和看书了。这几个月一直在学,真的尽力了,希望暑期前能找一份好点的实习。我简历上面的项目大多没有指标,但是实际上我是真没多少时间去做项目,我基本主要是动手只做了外卖和天机,黑马点评和12306我都是只是看了项目。主要是自己的时间真的不多,但是这样子自己的代码能力确实比较差。而且自己也没有做过实际的工程,我顶多用jmeter测试一下接口tps啥的,比如使用Redis管道提升了一点性能,减少Redis交互,这种值得写上去吗?需不需要具体到某些数字求求各位佬给一些建议,看看简历怎么优化?项目介绍是不是不够详细?没有具体到业务方面。项目会不会提到大致实现原理导致面试官一看简历就知道怎么实现就没有问的欲望?专业技能一些字段是不是要加粗,是不是写太啰嗦了?有没有必要压缩内容变成一页?两页的话是不是都要把两页填地满满的。
给秋招一个交代:一页简历最好,网上做的项目放面试官眼里都是玩具,简历上不需要强调有什么难点,记住就行防止真的问。然后背八股,多投多面试就行
点赞 评论 收藏
分享
评论
3
13
分享

创作者周榜

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