leetcode 74 java_LeetCode 力扣 74. 搜索二维矩阵

题目描述(中等难度)

39c7bb833d262705878443d8f538a147.png

判断一个矩阵中是否存在某个数,矩阵是有序的。

解法一 二分法

看到了有序序列,啥都不用想直接二分,只需要考虑到怎么把二分时候的下标转换为矩阵的行、列下标就可以了,很简单,用除法和求余就够了。

public boolean searchMatrix(int[][] matrix, int target) {

int rows = matrix.length;

if (rows == 0) {

return false;

}

int cols = matrix[0].length;

int left = 0;

int right = rows * cols - 1;

while (left <= right) {

int mid = (left + right) / 2;

int temp = matrix[mid / cols][mid % cols];

if (temp == target) {

return true;

} else if (temp < target) {

left = mid + 1;

} else {

right = mid - 1;

}

}

return false;

}

时间复杂度:O ( log ( n ) )。

空间复杂度:O ( 1 )。

这道题的二分法,比较简单,大家可以看下33题,相信对二分法会有一个更深刻的理解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值