剑指offer【面试题3 :二维数组中的查找】

题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,
每一列都按照从上到下递增的顺序排序。
请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

思路:想多说,在SLAM里程计代码中,比如:

vector<int>::itrator itr = found(vec.begin(), vec.end(), element_);  //假设我们要在vec中查找 element_

if(itr == vec.end())//如果没找到

{

     ......

}

 1 //题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,
 2 //                        每一列都按照从上到下递增的顺序排序。
 3 //请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
 4 
 5 // 1 2 3 4 5
 6 // 2 3
 7 // 3 4
 8 
 9 #include<vector>
10 #include<algorithm>
11 #include<iostream>
12 using namespace std;
13 
14 bool Find(int target, vector<vector<int> > array) {
15     bool isfound = false;
16     for (size_t j = 0; j < array.size(); j++) // 10行
17     {
18         vector<int> row_j = array[j];
19         vector<int>::iterator itr = find(row_j.begin(), row_j.end(), target);
20         if (itr != row_j.end())// 查找元素时候,经常用到的操作
21         {
22             isfound = true;
23             return isfound;
24         }
25     }
26     return isfound;
27 }
28 int main()
29 {
30     vector<vector<int>> _array;
31     for (size_t j= 0; j < 10; j++)
32     {
33         vector<int> temp;
34         for (size_t i = j; i < (j + 5); i++)
35         {
36             temp.push_back(i);
37             cout << i << " ";
38         }
39         _array.push_back(temp);
40         cout << endl;
41     }
42     bool _isfound = false;
43     _isfound = Find(13, _array);
44     return 1;
45 }

原文地址:https://www.cnblogs.com/winslam/p/9457803.html