leetcode74. 搜索二维矩阵 ,你见过吗

举报
兔老大 发表于 2021/04/22 00:38:26 2021/04/22
【摘要】 编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性: 每行中的整数从左到右按升序排列。 每行的第一个整数大于前一行的最后一个整数。 示例 1: 输入: matrix = [   [1,   3,  5,  7],   [10, 11, 16, 20], &nb...

编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:

每行中的整数从左到右按升序排列。
每行的第一个整数大于前一行的最后一个整数。
示例 1:

输入:
matrix = [
  [1,   3,  5,  7],
  [10, 11, 16, 20],
  [23, 30, 34, 50]
]
target = 3
输出: true
示例 2:

输入:
matrix = [
  [1,   3,  5,  7],
  [10, 11, 16, 20],
  [23, 30, 34, 50]
]
target = 13
输出: false

思路:整个二维数组是有序的,二分查找即可。


  
  1. class Solution {
  2. public boolean searchMatrix(int[][] matrix, int target) {
  3. if (matrix == null || matrix.length == 0) {
  4. return false;
  5. }
  6. int row = matrix.length;
  7. int col = matrix[0].length;
  8. int start = 0;
  9. int end = row * col - 1;
  10. while (start <= end) {
  11. int mid = start + (end - start) / 2;
  12. if (matrix[mid / col][mid % col] == target)return true;
  13. else if (matrix[mid / col][mid % col] > target)end = mid - 1;
  14. else start = mid + 1;
  15. }
  16. return false;
  17. }
  18. }

 

文章来源: fantianzuo.blog.csdn.net,作者:兔老大RabbitMQ,版权归原作者所有,如需转载,请联系作者。

原文链接:fantianzuo.blog.csdn.net/article/details/103563632

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。