当前位置: 首页剑指offer刷题第四期问题详情 【杂题】剑指 Offer 04. 二维数组中的查找 本问题对应课程链接:剑指offer刷题第四期 要求: 1、请打卡你的解题代码,如果能简单说一下思路则简单说一下思路。 2、给出你代码所用的时间复杂度和空间复杂度
共以下 8 个回答
很巧妙,充分利用了每行每列递增的特性,主要思想是从左下角或者右上角出发,每次排除一行或一列。
8.10 周四
Day31:下面是代码
class Solution {
public boolean findNumberIn2DArray(int[][] matrix, int target) {
//感觉对二维数组按行/列二分一次次找
if(matrix.length0||matrix[0].length0)
{
return false;
}
int n=matrix.length;
int m=matrix[0].length;
for(int i=0;i<n;i++)//按行二分查找
{
int left =0;
int right=m-1;
int mid=(left+right)/2;
while(left<=right)
{
if(matrix[i][mid]target)
{
return true;
}
if(matrix[i][mid]<target)
{
left=mid+1;
}
if(matrix[i][mid]>target)
{
right=mid-1;
}
mid=(left+right)/2;
}
}
}
双指针,由于有序,可以一左一右,模拟判断