有一次相邻数字调换的机会
var num = readline(); //读取数组长度
var arr = readline().split(''); //读取数组
// var num = 20;
// var arr = [1, 1, 2, 2, 1, 1, 1, 1, 2, 1, 2, 1, 2, 2, 2, 2, 3, 2, 1, 1];
var max = 0;
for (var i = 0; i < arr.length; i++) {
for (var j = i; j < arr.length; j++) {
if (parseInt(arr[i]) != parseInt(arr[j])) { // 遇到不一样的即计算长度
if (parseInt(arr[i]) == parseInt(arr[j + 1]) || parseInt(arr[i]) == parseInt(arr[j - 1])) { // 判断调换位置的长度
sum = j - i + 1;
} else {
sum = j - i;
}
if (max < sum) { // 更新最大长度
max = sum;
}
break;
}
}
}
console.log(max);

本文介绍了一种算法,通过遍历数组,利用一次相邻数字调换的机会,找到数组中长度最大的连续相同数子序列。通过双层循环和条件判断,不断更新最大长度记录。
730

被折叠的 条评论
为什么被折叠?



