zoukankan      html  css  js  c++  java
  • 【算法】剑指第二版面试题4 :二维数组中的查找

    题干

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

    func Find(board [][]int, target int) bool {}
    

    直觉思路

    二分查找的思想,不断缩小查找范围。

    怎么想到的

    不断缩小查找范围。

    代码编写思路

    多少行:rlen := len(board)
    多少列: clen := len(board[0])

    行索引和列索引最大值: rlen-1,clen-1

    从右上角开始查找:初始化
    r: 行索引,第一行, 0
    c: 列索引,最后一列, clen-1

    查找继续的条件:(最后一列最后一行都是可以继续查找的)
    行索引(不断增加): r < rlen
    列索引(不断减少): c >=0

    时间复杂度 (TODO)

    • m行,n列:
      r从0到m-1,c从n-1到0. 循环最多执行m+n次,所以O(m+n)
  • 相关阅读:
    Jzoj4729 道路修建
    Jzoj4727 挺进
    Jzoj4727 挺进
    Jzoj4726 种花
    Jzoj4726 种花
    Jzoj4725 素数序列
    Jzoj4725 素数序列
    力扣算法题—040组合求和二
    力扣算法题—039组合求和
    力扣算法题—038报数
  • 原文地址:https://www.cnblogs.com/yudidi/p/12350645.html
Copyright © 2011-2022 走看看