“牛客编程巅峰赛S2第5场 - 青铜&白银&黄金” 做题记录

牛牛算数

https://ac.nowcoder.com/acm/contest/9556/A

距离ak最近的一次, 8分钟做完第二题。 结果在第三题卡死了。。。

第一题:

    public int Answerofjudge (int[] arr) {
        // write code here
        Arrays.sort(arr);
        double mid =0;
        if(arr.length %2 ==0){
            mid = ((double)arr[arr.length/2 -1]+(double)arr[arr.length/2])/2;
        }else{
            mid = arr[arr.length/2];
        }
        double sum =0;
        for(int a: arr){
            sum +=a;
        }
        sum =sum/arr.length;

        if(mid > sum){
            return 1;
        }else if(mid <sum){
            return -1;
        }else{
            return 0;
        }

    }

第二题

    public int Maximumlength (String x) {
        // write code here
        char[] str= x.toCharArray();
        int[] book = new int[26];
        int left=0;
        int right=0;
        int res= 0;
        while(right<str.length){
            book[str[right]-'a']++;
            while(!judge(book)){
                book[str[left]-'a']--;
                left++;
            }
            right++;
            res = Math.max(res, right-left);
        }
        return res;

    }

    public boolean judge(int[] book){
        if(book['n'-'a']!=0 &&book['p'-'a']!=0 &&book['y'-'a']!=0 ){
            return false;
        }else {
            return true;
        }
    }

第三题:

首先是后缀表达式的定义。 可能会有这样的输入: 1#2#3#4#+++
然后,在做减法时,是前面的数减后面,还是后面减前面
最后...据说比赛时候数据还有问题。 要返回栈底的数才能过。

     public long solve(String str){
        char[] s = str.toCharArray();
        Deque<Long> stack = new LinkedList<>();
        int left =0;
        int right =0;
        while(s[right]!='#') right++;
        stack.push( Long.parseLong(str.substring(left,right)));
        right++;
        left=right;
        while(left<s.length){
            while(s[right]!='#' &&s[right]!='+'&&s[right]!='-'&&s[right]!='*'){
                right++;
            }
            if(s[right] =='#'){
                stack.push( Long.parseLong(str.substring(left,right)));
                right++;
                left=right;
            }else if(s[right]=='+'){
                long a= stack.pop();
                long b =stack.pop();
                stack.push(a+b);
                right ++;
                left =right;
            }else if(s[right]=='-'){
                long b= stack.pop();
                long a =stack.pop();
                stack.push(a-b);
                right ++;
                left =right;
            }else if(s[right]=='*'){
                long a= stack.pop();
                long b =stack.pop();
                stack.push(a*b);
                right ++;
                left =right;
            }
        }
        return stack.pop();
    }
全部评论

相关推荐

10-09 00:50
已编辑
长江大学 算法工程师
不期而遇的夏天:1.同学你面试评价不错,概率很大,请耐心等待;2.你的排名比较靠前,不要担心,耐心等待;3.问题不大,正在审批,不要着急签其他公司,等等我们!4.预计9月中下旬,安心过节;5.下周会有结果,请耐心等待下;6.可能国庆节前后,一有结果我马上通知你;7.预计10月中旬,再坚持一下;8.正在走流程,就这两天了;9.同学,结果我也不知道,你如果查到了也告诉我一声;10.同学你出线不明朗,建议签其他公司保底!11.同学你找了哪些公司,我也在找工作。
点赞 评论 收藏
分享
勇敢的联想人前程似锦:如果我是你,身体素质好我会去参军,然后走士兵计划考研211只需要200多分。
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务