爱奇艺 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);
}
}