連続した要素区間の最大長 (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);