爱奇艺9.15笔试代码

爱奇艺9.15笔试————食物排名AC代码:

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int N = in.nextInt();
        int M = in.nextInt();
        int P = in.nextInt();
        int[] Ai = new int[N];
        for (int i = 0;i < N;i++){
            Ai[i] = in.nextInt();
        }
        for (int i = 0;i < M;i++){
            String doing = in.next();
            if (doing.equals("A")){
                int temp = Integer.valueOf(in.next());
                Ai[temp - 1]++;
            }else {
                int temp = Integer.valueOf(in.next());
                Ai[temp - 1]--;
            }
        }
        int pi = Ai[P - 1];
        Arrays.sort(Ai);
        int rank = 1;
        for (int i = N - 1;i >= 0;i--){
            if (pi != Ai[i]) rank++;
            else break;
        }
        System.out.println(rank);
    }
}

完美ID直接根据差值范围确定次数,91%通过率,估计有特殊case。

#爱奇艺##笔试题目#
全部评论
前面维护食物个数的思路差不多,后面采用排序+二分查找(变形),完美ac
点赞 回复
分享
发布于 2018-09-15 13:06
import java.util.Scanner; import java.util.Arrays; public class Main {     public static void main(String[] args) {         Scanner sc = new Scanner(System.in);         char[] array = sc.nextLine().toCharArray();         short[] sixNum = new short[6];         short sum1 = 0;         short sum2 = 0;         for(int i = 0; i < 6; i++){             short num = Short.valueOf(Character.toString(array[i]));             sixNum[i] = num;             if(i < 3)                 sum1 += num;             else                 sum2 += num;         }         if(sum1 == sum2)             System.out.println(0);         else if (sum1 > sum2){             for(int i = 3; i < 6; i++)                 sixNum[i] = (short)(9 - sixNum[i]);             Arrays.sort(sixNum); //数组排序             int cha = sum1 - sum2;             for(int i = 5; i >= 0; i--){                 cha = cha - sixNum[i];                 if(cha <= 0) {                     System.out.println(6 - i);                     break;                 }             }         }else{             for(int i = 0; i < 3; i++)                 sixNum[i] = (short)(9 - sixNum[i]);             Arrays.sort(sixNum); //数组排序             int cha = sum2 - sum1;             for(int i = 5; i >= 0; i--){                 cha = cha - sixNum[i];                 if(cha <= 0) {                     System.out.println(6 - i);                     break;                 }             }         }     } } 完美id
点赞 回复
分享
发布于 2018-09-15 13:04
滴滴
校招火热招聘中
官网直投
第二个面条的题怎么用动态规划?我直接输出10,34%正确率
点赞 回复
分享
发布于 2018-09-15 13:23
为什么要排序,根本不需要排序
点赞 回复
分享
发布于 2018-09-15 16:37
排序还增加了时间复杂度
点赞 回复
分享
发布于 2018-09-15 16:37

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务