京东4.16笔试

选择不说了
编程第一道a了81%
第二道0,我在结束后几分钟写出来,发现有个条件写错了。。。。。样例过了,但是别的没测不知道。。。。。
第一题代码
import java.util.Objects;
import java.util.Scanner;

public class Main1 {
  public static void main(String[] args) {
      Scanner in=new Scanner(System.in);
      int t=in.nextInt();
      String s1=in.nextLine();
      int[] n=new int[t];
      for(int i=0;i<t;i++){
          n[i]=in.nextInt();
          String s2=in.nextLine();
          String[] str=new String[n[i]];
          for(int j=0;j<n[i];j++){
              str[j]=in.nextLine();
          }
          if(!isMatch(str)){
              System.out.println("Yes");
          }else {
              System.out.println("No");
          }
      }
  }
  public static boolean isMatch(String[] str){
      String[] stack=new String[str.length];
      int top=-1;
      for(int i=0;i<str.length;i++){
          String curr=str[i];
          if(!str[i].contains(" ")&&str[i].equals(str[i])){
              stack[++top]=str[i];
          }else {
              if(top==-1){
                  return false;
              }
              String temp=stack[top--];
              if(str[i].equals("end "+curr)&& !Objects.equals(temp, str[i])){
                  return false;
              }
          }
      }
      return top == -1;
  }
}

第二题代码
import java.util.Arrays;
import java.util.Scanner;

public class Main2 {
  public static void main(String[] args) {
    Scanner in=new Scanner(System.in);
    int t=in.nextInt();
    for(int i=0;i<t;i++){
      String s1=in.nextLine();
      int n=in.nextInt();
      String s2=in.nextLine();
      int[] a=new int[n];
      for(int j=0;j<n;j++){
        a[j]=in.nextInt();
      }
      Arrays.sort(a);
      if(n%2==0){
        int[] num=new int[n/2+1];
        int k=0;
        for(int j=1;j<n/2-1;j+=2){
          num[k]=a[j];
          k++;
        }
        for(int j=n/2;j<n;j++){
          num[k]=a[j];
          k++;
        }
        k--;
        if((k+1)%2!=0){
          System.out.print(num[(k+1)/2]+" ");
        }else {
          System.out.print(num[(k)/2]+" ");
        }
      }else {
        int[] num=new int[(n+1)/2];
        int k=0;
        for(int j=1;j<(n+1)/2-1;j+=2){
          num[k]=a[j];
          k++;
        }
        for(int j=(n+1)/2;j<n;j++){
          num[k]=a[j];
          k++;
        }
        k--;
        if((k+1)%2!=0){
          System.out.print(num[(k+1)/2]+" ");
        }else {
          System.out.print(num[(k)/2]+" ");
        }
      }
    }
  }
}


#京东笔试##笔试题目#
全部评论
您的第二题不是中位数嘛?似乎不一样
1 回复 分享
发布于 2022-04-16 21:28
A了一道题,已转推荐
点赞 回复 分享
发布于 2022-04-22 11:12
第二题我当时理解错了,一直以为的是排完序后相邻的至少选一个,测半天没测出反例🙃 g
点赞 回复 分享
发布于 2022-04-16 21:47

相关推荐

评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务