1.二维数组中的查找
题目描述:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
误区:以斜对角的数组为比较对象,并不是大于array[i][i],小于array[i+1][i+1]的数字还很多很多;满足这个条件只能排除左上角的一小块。
1 //思路:矩阵是有序的,从左下角来看,向上数字递减,向右数字递增,因此从左下角开始查找,当要查找数字比左下角数字大时。右移要查找数字比左下角数字小时,上移。 2 class Solution { 3 public: 4 bool Find(vector<vector<int> > array,int target) { 5 int rowCount = array.size(); 6 int colCount = array[0].size(); 7 int i,j; 8 for(i=rowCount-1,j=0;i>=0&&j<colCount;){ 9 if(target == array[i][j]) 10 return true; 11 if(target < array[i][j]){ 12 i--; 13 continue; 14 } 15 if(target > array[i][j]){ 16 j++; 17 continue; 18 } 19 } 20 return false; 21 } 22 };