写在前面
代码说明:代码的下载地址: https://github.com/WuNianLuoMeng/Coding
视频说明:第一次以这样的形式录视频,如果有哪里说的不对,还请各位及时指出,谢谢~
二维数组中的查找 视频链接
方法一:
通过遍历array数组,去查找array数组中有没有target的值。它的时间复杂度是(O(n * m))
public boolean Find(int target, int [][] array) {
for (int i = 0; i < array.length; i++)
{
for (int j = 0; j < array[0].length; j++)
{
if (array[i][j] == target)
return true;
}
}
return false;
} 方法二(从矩阵的右上角开始找):
设置一个i,j表示所找当前位置,如果说array[i][j] > target大的话,接着就往左找,反之往下找,直到找到array[i][j] == target为止。它的时间复杂度是:O(n + m)
public boolean Find(int target, int [][] array) {
int i = 0;
int j = array[0].length - 1;
while(i >= 0 && i < array.length && j >= 0 && j < array[0].length)
{
// array[i][j]
if (array[i][j] == target)
return true;
else if (array[i][j] > target)
j--;
else
i++;
}
return false;
} 方法三(从矩阵的左下角开始找):
设置一个i,j表示所找当前位置,如果说array[i][j] > target大的话,接着就往上找,反之往右找,直到找到array[i][j] == target为止。它的时间复杂度是:O(n + m)
public boolean Find(int target, int [][] array) {
int i = array.length - 1;
int j = 0;
while(i >= 0 && i < array.length && j >= 0 && j < array[0].length)
{
// array[i][j]
if (array[i][j] == target)
return true;
else if (array[i][j] > target)
i--;
else
j++;
}
return false;
} 
京公网安备 11010502036488号