算法-数组-二维数字中的查找

来源:互联网 发布:杀敌算法 下载 编辑:程序博客网 时间:2024/06/10 08:50

问题描述:每行从左到右,每列从上到下递增的二维数组中,判断某个数是否存在。

1 2  8  9
2 4  9 12
4 7 10 13
6 8 11 15
7 9 12 18

思路 :从右上角开始呢?以上的矩阵,假如我们查找的是7,从右上角开始,先比较9和7,9比7大,9又是本列的第一个,那么可以确定,9所在的列数字都大于7,我们可以排除最后一列,前移一列。比较8和7,8大于7,同样的思想我们可以排除8所在的列。接下来比较2和7,2小于7,那么2所在的行前面的数字都小于7,可以不必再比较了,直接排除2所在的行。以此类推,我们很快就可以定位到7.


<script type="text/javascript"> let arr1 = [[1, 2, 8, 9], [2, 4, 9, 12], [4, 7, 10, 13], [6, 8, 11, 15],[7, 9, 12, 18]];  function findNumber (num, arr) { let rows = arr.length; let columns = arr[0].length; let found = false; if(typeof num === 'number' && rows > 0 && columns > 0) { let row = 0; let column = columns - 1; while(row < rows && column >= 0) { if(arr[row][column] == num) { found = true; break; }  else if(arr[row][column] > num) { column --; } else(arr[row][column] < num)  row ++;  } } return found; } console.log(findNumber(14, arr1)); </script>


0 0
原创粉丝点击