科大讯飞笔试8.28编程题

科大讯飞笔试8.28编程题
第一题 判断成绩等级送分题
第二题 最长重复数字区间 可以交换一次
第三题 测试用例过了 但是A了0;
这是第二题的代码
public class Main2 {
  public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    int n = in.nextInt();
    int num[] = new int[n];
    for (int i = 0; i < n; i++) {
      num[i] = in.nextInt();
    }
    int left = 0, right = 1;
    int max = 1;
    ArrayList<Integer> maxleft = new ArrayList<>();

    while (right < n) {
      while (right < n && num[left] == num[right]) {
        right++;
      }
      if (max <= right - left) {
        if (max < right - left) {
          max = right - left;
          maxleft.clear();
          maxleft.add(left);
        } else {
          maxleft.add(left);
        }
      }
      left = right;
      right++;
    }

    for (Integer i : maxleft) {
      int maxRight = i + max - 1;
      if (i > 1 && num[i - 2] == num[i]) {
        max++;
        break;
      } else if (maxRight < n - 2 && num[maxRight + 2] == num[maxRight]) {
        max++;
        break;
      }
    }
    System.out.println(max);
  }
}



#科大讯飞笔试##科大讯飞##笔经#
全部评论
老哥,我今天笔试跟你题一样?第三题是障碍改成道路的个数嘛?
点赞 回复
分享
发布于 2021-10-10 20:30

相关推荐

8 16 评论
分享
牛客网
牛客企业服务