二维数组中的查找

在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

思路

  • 矩阵是有序的,从左下角来看,向上数字递减,向右数字递增;
  • 因此从左下角开始查找,当要查找数字比左下角数字大时。右移;
  • 要查找数字比左下角数字小时,上移。
<script>
  const arrTest = [[1, 2, 3], [7, 9, 11], [8, 10, 16]]
  function find(array, target) {
    let lenX = array.length
    let lenY = array[0].length
    for(let i = lenX - 1, j = 0; i >= 0 && j <= lenY - 1;) { // 坐标定在左下角
      if(target > array[i][j]) {
        j++ // 遇大右移
      } else if(target < array[i][j]) {
        i-- // 遇小上移
      } else {
        return true
      }
    }
    return false
  }
  console.log(find(arrTest, 6))
  console.log(find(arrTest, 3))
</script>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输...
    minningl阅读 463评论 0 0
  • 题目: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,...
    李2牛阅读 380评论 0 0
  • 二维数组中的查找 题目描述 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排...
    echoVic阅读 529评论 0 6
  • 题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输...
    913c9536e19a阅读 409评论 0 0
  • 姓名:魏正君《六项精进》第270期感谢2组 公司:绵阳大北农农牧科技有限公司 【日精进打卡第160天】 【知~学习...
    莫心莫肺阅读 226评论 0 0