首页 > 科大讯飞笔试8.28编程题
头像
卑微求职人alan
编辑于 2021-08-28 21:26
+ 关注

科大讯飞笔试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);
  }
}



全部评论

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

推荐话题

相关热帖

近期热帖

近期精华帖

热门推荐