栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

LeetCode-二维数组中的查找

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

LeetCode-二维数组中的查找

二维数组中的查找

二维数组中的查找
在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

思路

注意题目说明从左到右和从上到下递增,所以可以用两个索引(i,j)控制行列数

  1. 当 matrix[i][j] > target,说明该行都大于target,则可以排除该行,往上重新开始
  2. 当 matrix[i][j] < target,说明该列都小于target,则可以排除该列,往左重新开始
  3. 当 matrix[i][j] = target,说明找到target,返回true
  4. 当每行每列都遍历结束(i 和 j 都越界),则说明没找到target,返回false

Python

def findNumberIn2DArray(self, matrix, target):
        if not matrix:					#若数组为空,则直接返回false
            return False
        i = 0
        j = len(matrix[0]) - 1
        while i < len(matrix) and j >= 0:
            if matrix[i][j] < target:	#情况2
                i += 1
            elif matrix[i][j] > target:	#情况1
                j -= 1
            else:						#情况3
                return True
        return False					#情况4
        """
        :type matrix: List[List[int]]
        :type target: int
        :rtype: bool
        """

C++

bool findNumberIn2DArray(vector>& matrix, int target) {
        if(matrix.empty())
            return false;
        int i = 0;
        int j = matrix[0].size() - 1;
        while(i < matrix.size() && j >= 0)
        {
            if(matrix[i][j] < target)
                i++;
            else if(matrix[i][j] > target)
                j--;
            else
                return true;
        }    
        return false;
    }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/487879.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号