输入:一个二维数组,每一个元素为0或者1
输出:最多有多少个1是连续的
连续的定义:上下左右相邻
直接贴代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script>
const arr = [
[1, 0, 1, 1, 0],
[1, 0, 0],
[0, 0, 1, 0, 1],
[1, 0, 1, 0, 1],
[1, 0, 1, 1],
];
function getNumber(arr, i, j){
let num = 1;
arr[i][j] = 0;
if(arr[i-1]&& arr[i-1][j]){ //上边
num += getNumber(arr,i - 1, j);
}
if(arr[i+1]&& arr[i+1][j]){ //下边
num += getNumber(arr,i + 1, j);
}
if(arr[i][j-1]){ //左边
num += getNumber(arr,i, j - 1);
}
if(arr[i][j+1]){ //右边
num += getNumber(arr,i, j + 1 );
}
return num
}
function getMax(arr){
let max = 0
for(let i =0 ;i<arr.length;i++){
for(let j = 0; j< arr[i].length; j++){
const ele = arr[i][j]
if(ele === 1){
const cur = getNumber(arr, i,j)
cur > max && (max = cur)
}
}
}
return max
}
const start = window.performance.now()
console.log(getMax(arr))
console.log(‘用时:‘,window.performance.now() - start)
</script>
</body>
</html>
原文:https://www.cnblogs.com/aloneindefeat/p/13564895.html