二维数组上下左右连续几个1

输入:一个二维数组,每一个元素为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>

  

 

posted @ 2020-08-26 14:14  AloneInDefeat  阅读(1075)  评论(0编辑  收藏  举报