博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
240. Search a 2D Matrix II
阅读量:6265 次
发布时间:2019-06-22

本文共 1674 字,大约阅读时间需要 5 分钟。

一、题目

  1、审题

  

  2、分析

    给出一个二维数组,每一行的元素、每一列的元素均有序。在此数组中查找 target 元素。

 

二、解答

  1、思路

    方法一、

      在每一行中用二分查找法。

public boolean searchMatrix(int[][] matrix, int target) {                int rows, cols;        if(matrix == null || (rows = matrix.length) == 0 || (cols = matrix[0].length) == 0)            return false;                int row = 0;        while(row < rows) {            int start = 0, end = cols - 1;            if(matrix[row][0] > target)                return false;            if(matrix[row][end] < target) {                row++;                continue;            }            while(start <= end) {                int mid = (end - start) / 2 + start;                if(matrix[row][mid] == target)                    return true;                else if(matrix[row][mid] < target)                    start = mid + 1;                else                    end = mid - 1;            }            row++;        }        return false;    }

 

  方法二、

    从二维数组的右上角开始向前、向下定位:

    ①、若 target 小于当前元素,则 target 不可能在当前列,因为列向下为升序。

    ②、若 target 大于当前元素,则 target 不可能在当前行,因为当前行为升序。

public boolean searchMatrix(int[][] matrix, int target) {        int rows, cols;        if(matrix == null || (rows = matrix.length) == 0 || (cols = matrix[0].length) == 0)            return false;                // 从右上角开始查找        int row = 0, col = cols - 1;        while(col >= 0 && row < rows) {            if(target == matrix[row][col])                return true;            else if(target < matrix[row][col])                col--;            else if(target > matrix[row][col])                row++;        }        return false;    }

 

转载于:https://www.cnblogs.com/skillking/p/9942775.html

你可能感兴趣的文章
Linux 比较重要且难掌握命令 集合
查看>>
C#基本概念列举说明
查看>>
如何有效使用Project(2)——进度计划的执行与监控
查看>>
iOS 工作遇到问题记录
查看>>
Android 中屏幕点击事件的实现
查看>>
做为一个前端工程师,是往node方面转,还是往HTML5方面转
查看>>
spark 安装配置
查看>>
图片裁剪和异步上传插件--一步到位(记录)
查看>>
在Vs2012 中使用SQL Server 2012 Express LocalDB打开Sqlserver2012数据库
查看>>
【分享】博客美化(7)推荐几个优秀的自定义博客
查看>>
人工智能和机器学习领域的一些有趣的开源项目
查看>>
python sorted排序
查看>>
python中xrange和range的异同
查看>>
PHP根据ASCII码返回具体的字符
查看>>
atitit.系统架构图 的设计 与工具 attilax总结
查看>>
URAL 1774 A - Barber of the Army of Mages 最大流
查看>>
处理器(CPU)调度问题
查看>>
leetcode - 位运算题目汇总(下)
查看>>
多少个矩形被覆盖
查看>>
22、ASP.NET MVC入门到精通——搭建项目框架
查看>>