今天再牛客上看到一个算法题。
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
例如下图中要查找 8。如果存在返回true,如果要查找30,则返回false。
查询的思路就是直接定位到第一行的最右边的元素(5),如果要查找的元素比5小,则左移,如果比5大则下移,反复执行,直到查找完毕。
java代码如下
/**
*
* @param strs 待查找的数组
* @param rows 行数
* @param colums 列数
* @param number 要查找的数
* @return 查找结果,返回true则存在,false不存在
*/
public static boolean yongSearch(int strs[][], int rows, int colums,int number) {
boolean found = false;
int row = 0;
int colum = colums - 1;
while (rows > row && colum >= 0) { //在矩阵中一直进行查找
if (strs[row][colum] == number) {
found = true;
break;
} else if (strs[row][colum] > number) { //下移
colum--;
} else {
row++; //左移
}
}
return found;
}
算法的代码很简单,最重要的还是要学会这种思路啊