题解 | #合并两个排序的链表#
二维数组中的查找
http://www.nowcoder.com/practice/abc3fe2ce8e146608e868a70efebf62e
public:
// 算暴力的一种解法吧,找到第一行,第一列的小于target的一个边界,然后循环求取有无等于target的值。
// bool Find(int target, vector<vector<int> > array) {
// bool flag = false;
// int m = array.size(), n = array[0].size();
// if(m == 0 || n == 0){
// return false;
// }
// int indexj = 0;
// while(indexj <n && array[0][indexj]<=target){
// indexj++;
// }
// indexj = indexj == 0? 0:indexj-1;
// int indexi = 0;
// while(indexi <m && array[indexi][0]<=target){
// indexi++;
// }
// indexi = indexi == 0? 0:indexi-1;
// for(int i=0;i<=indexi;i++){
// for(int j=0;j<=indexj;j++){
// if(array[i][j] == target){
// flag = true;
// break;
// }
// }
// }
// return flag;
//方法二:二分查找,从左下角出发,个人觉得这个很灵活~ 希望可以掌握
bool Find(int target, vector<vector<int> > array) {
int m = array.size(), n = array[0].size();
int i = m-1, j = 0;
while(i>=0 && j<n){
if(target < array[i][j]){
i--;
}else if(target > array[i][j]){
j++;
}else{
return true;
}
}
return false;
}
};