爱奇艺 2019校招 Java方向试卷在线考试

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jal517486222/article/details/82712430

爱奇艺 2019校招 Java方向试卷在线考试

当时我同时投递了前端岗和Java岗,不过只收到了Java岗的在线笔试邮件,不过幸好是收到了Java的,要不然也不能做的这么顺利。嘻嘻~

选择题20题60分,基本上考的都是Java的基础知识,例如:继承,try-catch,实例化,设计模式。我感觉这些不太难。除了Java的知识外,还考到了数据结构,比如说哈希表,堆,二叉树。还考到了几个数据库的知识,计算机网络和Linux貌似没考到,记不清了。

编程题就两题,40分。我都AC了,嘿嘿~

A.幸运ID

时间限制:C/C++语言 1000MS;其他语言 3000MS
内存限制:C/C++语言 131072KB;其他语言 655360KB
题目描述:
小C有一张票,这张票的ID是长度为6的字符串,每个字符都是数字,他想让这个ID变成他的辛运ID,所以他就开始更改ID,每一次操作,他可以选择任意一个数字并且替换它。

如果这个ID的前三位数字之和等于后三位数字之和,那么这个ID就是辛运的。你帮小C求一下,最少需要操作几次,能使ID变成辛运ID

输入
输入只有一行,是一个长度为6的字符串。

输出
输出这个最小操作次数

样例输入
000000
样例输出
0

Hint
输入样例2
000018

输出样例2
1

样例解释:将前三位任意一个改为9即可满足条件,操作数为1

package aqiyi;

import java.util.Arrays;
import java.util.Scanner;

public class A {
    public static void main(String[] args) {
        Scanner cin = new Scanner(System.in);
        String s = cin.next();
        int []a = new int[3];
        int []b = new int[3];
        for(int i = 0; i < 3; i++){
            a[i] = s.charAt(i) - '0';
        }
        for(int i = 3; i < 6; i++){
            b[i-3] = s.charAt(i) - '0';
        }
        int sumA = a[0] + a[1] + a[2];
        int sumB = b[0] + b[1] + b[2];

        Arrays.sort(a);
        Arrays.sort(b);

        if(sumA == sumB){
            System.out.println(0);
            return;
        }

        if(sumA > sumB){
            int dif = sumA - sumB;
            if(9 - b[0] >= dif){
                System.out.println(1);
                return;
            }
            dif -= 9-b[0];
            if(a[2] >= dif){
                System.out.println(2);
                return;
            }
            if(9 - b[1] >= dif){
                System.out.println(2);
                return;
            }
            else System.out.println(3);

            return;
        }

        int dif = sumB - sumA;
        if(9 - a[0] >= dif){
            System.out.println(1);
            return;
        }
        dif -= 9-a[0];
        if(9 - a[1] >= dif){
            System.out.println(2);
            return;
        }
        if(b[2] >= dif){
            System.out.println(2);
            return;
        }
        else System.out.println(3);

    }
}

B.局长的食物

时间限制:C/C++语言 1000MS;其他语言 3000MS
内存限制:C/C++语言 131072KB;其他语言 655360KB
题目描述:
局长有N种食物,每种食物有Ai份。

每天局长会吃一份食物,或者买一份食物(即每天只能进行吃或买其中的一种动作),这样过了M天

现在局长想知道M天后第p种食物的份数排名(从大到小,相同算并列,例如3 3 2,则排名为1 1 3)

N,M,P<=100,Ai<=1000

输入
第一行N M P

第二行N个数Ai

接下来M行,每行A i或者B i分别表示买一份食物i,吃一份食物i

输出
一个答案

样例输入
3 4 2
5 3 1
B 1
A 2
A 2
A 3
样例输出
1

package aqiyi;

import java.util.Arrays;
import java.util.Scanner;

public class B {
    public static void main(String[] args) {
        Scanner cin = new Scanner(System.in);
        int n = cin.nextInt();
        int m = cin.nextInt();
        int p = cin.nextInt();
        p--;
        int []a = new int[n];
        for(int i = 0; i < n; i++){
            a[i] = cin.nextInt();
        }
        for(int i = 1; i <= m; i++){
            String x = cin.next();
            int y = cin.nextInt();
            y--;
            if(x.charAt(0) == 'A'){
                a[y]++;
            }
            else{
                a[y]--;
            }
        }
        int t = 1;

//        System.out.println(Arrays.toString(a));
        for(int i = 0; i < n; i++){
            if(a[i] > a[p]){
                t++;
            }
        }

        System.out.println(t);
    }
}

猜你喜欢

转载自blog.csdn.net/jal517486222/article/details/82712430