首页 > 美团笔试9.13
头像
在飞的菜鸟
编辑于 2020-09-13 15:52
+ 关注

美团笔试9.13

第一题AC

public class A{
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        while(in.hasNext()){
            int n = in.nextInt();
            int m = in.nextInt();
            int[][] matrix = new int[n][m];
            for(int i = 0;i < n;i++){
                for(int j = 0;j < m;j++){
                    matrix[i][j] = in.nextInt();
                }
            }

            int lo = 0, hi = n - 1;
            int i = lo, j = hi;
            int flag = 0;
            while(true){
                while(i < j){
                    if(equalRow(matrix[lo], matrix[hi])){
                        i++;
                        j--;
                    }else{
                        i = lo;
                        j = 0;
//                      int[][] ans = new int[hi-lo+1][m];
                        for(int row = 0;row < hi-lo+1;row++){
                            for(int col = 0;col < m;col++){
//                                ans[row][col] = matrix[i][j++];
                                System.out.print(matrix[i][j++] + " ");
                            }
                            System.out.println();
                            i++;
                            j = 0;
                        }
//                        for(int  row = 0;row < ans.length;row++){
//                            for(int col = 0;col < m;col++){
//                                System.out.print(ans[row][col] + " ");
//                            }
//                            System.out.println();
//                        }
                        flag = 1;
                    }
                }
                if(i > j){
                    i = lo;
                    hi = j;
                }
                if(flag == 1) break;
            }
        }

    }

    public static boolean equalRow(int[] x, int [] y){
        for(int i = 0;i < x.length;i++){
            if(x[i] != y[i]) return false;
        }
        return true;
    }
}

第二题AC

public class A{
    public static void main(String[] args){
      Scanner in = new Scanner(System.in);
      while(in.hasNext()){
          int n = in.nextInt();
          int m = in.nextInt();
          int k = in.nextInt();

          int[] gift = new int[n];
          for(int i = 0;i < n;i++){
              gift[i] = in.nextInt();
          }

          int count = 0;

          Stack<Integer> s = new Stack<>();
          for(int i = 0;i < n;i++){
              if(gift[i] < k){
                  s.push(i);
              }
          }

          int curMax = n - 1;
          while(!s.isEmpty()){
              int x = s.pop();
              if(curMax - x + 1 >= m) count += curMax - x - m + 1;
              curMax = x - 1;

          }
          if(curMax >= m) {
              count += curMax - m + 2;
          }
          System.out.println(count);

      }

    }

}

第三题45%
第四题55%(难道是没考虑空串?感觉思路很正确)

public class A{
    public static void main(String[] args){
      Scanner in = new Scanner(System.in);
      while(in.hasNext()){
          long count = 1;
          int n = in.nextInt();
          String s = in.next();

          if(n == 1){
              System.out.println(1);
              continue;
          }
          // 逆时针
          for(int i = 1;i < s.length()-1;i++){
              char pre = s.charAt(i-1);
              char cur = s.charAt(i);
              char next = s.charAt(i+1);

              // 1. cur 顺时针, pre 逆时针
              count += Math.min(pre - 'A', 'Z' - cur);

              // 2. next 顺时针, cur 逆时针
              count += Math.min(next - 'A', 'Z' - cur);
          }

          count += Math.min(s.charAt(1) - 'A', 'Z' - s.charAt(0));
          count += Math.min(s.charAt(s.length()-2) - 'A', 'Z' - s.charAt(s.length()-1));
          System.out.println(count % 998244353);
      }
    }
}

第五题AC

public class A{
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        while(in.hasNext()){
            int n = in.nextInt();
            int[][] data = new int[n][3];

            for(int i = 0;i < n;i++){
                for(int j = 0;j < 2;j++){
                    data[i][j] = in.nextInt();
                }
                data[i][2] = i+1; // 第几件事情
            }

            Arrays.sort(data, new Comparator<int[]>() {
                @Override
                public int compare(int[] o1, int[] o2) {
                    if(o1[1] == o2[1]) return o2[0] - o1[0];
                    return o2[1] - o1[1];
                }
            });

            for(int i = 0;i < n;i++) {
                System.out.print(data[i][2] + " ");
            }
        }
    }
}

全部评论

(0) 回帖
加载中...
话题 回帖

相关热帖

近期热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

热门推荐