专业建设内容/优化人员是什么意思
题目描述
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
注意:
1.只能从左下角坐标或右上角坐标找起 ,比如下表的4*4数组,若target比右上角的9大,则row++去下一行找,若target比右上角角的9小,则col--去左边的列找
2.右上角的下标为初始值时,row=0,因为是第一行
用JAVA实现时,用数组的操作符,所以col=array[0].length-1;此为行号为0时,列的数量-1,即为第一行最后一列数字9的下标
用C++实现时,用的是vector求长度的函数,所以col=array[0].size()-1;
JAVA实现:
public class Solution {public boolean Find(int target, int [][] array) {int row = 0;int col = array[0].length-1;while(col>=0&&row<=array.length-1){if(target==array[row][col]){return true;}else if(target>array[row][col]){row++;}else{col--;}}return false;}
}
C++实现
class Solution {
public:bool Find(int target, vector<vector<int> > array) {if(array.empty()){return false;}int row = 0;int col = array[0].size()-1;//为0,列号为行号为0时的列数-1,因为数组下标是从0开始的while(row<=array.size()-1&&col>=0){if(target==array[row][col]){return true;}else if(target<array[row][col]){col--;}else{row++;}}return false;}
};