【力扣】74. 搜索二维矩阵
发布日期:2021-06-29 19:46:48 浏览次数:2 分类:技术文章

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

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

每行中的整数从左到右按升序排列。

每行的第一个整数大于前一行的最后一个整数。

示例 1:

在这里插入图片描述

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

输出:true
示例 2:
在这里插入图片描述

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

输出:false

提示:

m == matrix.length

n == matrix[i].length
1 <= m, n <= 100
-104 <= matrix[i][j], target <= 104

答案:

class Solution {
public boolean searchMatrix(int[][] matrix, int target) {
//m行,n列,使用两次二分查找 if (matrix.length == 0 || matrix[0].length == 0) return false; int start = 0, end = matrix.length - 1, mid1 = (start + end) / 2, mid2 = mid1 + 1; while(start < end){
if(matrix[mid1][0] == target || matrix[mid2][0] == target) return true; else if(mid2 >= matrix.length) break; else if(matrix[mid1][0] < target && matrix[mid2][0] > target) break; else if(matrix[mid1][0] < target && matrix[mid2][0] < target) start = mid2; else if(matrix[mid1][0] > target && matrix[mid2][0] > target) end = mid1; mid1 = (start + end) / 2; mid2 = mid1 + 1; } if(start > end) return false; for(int i = 0; i < matrix[0].length; i++) if(matrix[mid1][i] == target) return true; return false; }}

转载地址:https://darkness.blog.csdn.net/article/details/115321907 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:【剑指OFFER】46. 把数字翻译成字符串
下一篇:【区块链】使用JAV简易A模拟创建区块链及挖矿

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2024年04月28日 17时30分19秒