0
0

More than 1 year has passed since last update.

paizaラーニング レベルアップ問題集 線形探索メニュー応用編 JavaScript 連続した要素区間の最大長

Posted at

連続した要素区間の最大長 (paizaランク B 相当)

解答例

aの調べる左端lと右端rについてループを回します。
左端lを基準に、右端rを条件を満たす(a[l]=a[r])限り伸ばしていきます。
条件を満たさなくなったら長さを求めます。
a[l]!=a[r]なら、r-1までの長さ、
同じ要素なのに最後だったら、rまでの長さを求めます。

const fs = require("fs");
const input = fs.readFileSync("/dev/stdin", "utf-8").trim();
const lines = input.split("\n");

const [n] = lines[0].split(" ").map(Number);
const a = lines[1].split(" ").map(Number);

let max = 0;//同じ要素が連続する区間の最大長
//aの調べる区間の左端l
for (let l = 0; l < n; l++) {
  //aの調べる区間の右端r
  for (let r = l; r < n; r++) {
    //同じ要素でなくなったら
    if (a[l] !== a[r]) {
      max = Math.max(max, (r - 1) - l + 1);//一つ手前までの長さ
      break;
        //もし同じ要素だが最後だったら、
    } else if (r === n - 1) {
      max = Math.max(max, r - l + 1);//最後までの長さ
    }
  }
}

console.log(max);
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0