题目三:二维数组中的查找

//二位数组查找 题目描述
//在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。
//请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

bool FindNum(int target, vector<vector<int> > vect)
{
     int iRow = vect.size();
     int iCol = vect[0].size();
    
     //从左上角开始遍历
     int i = 0, j = iCol - 1;
     while (i <= iRow - 1 && j >= 0) //保证数组不能越界
     {
         if (vect[i][j] > target)
         {
             j--;
         }
         else if (vect[i][j] < target)
         {
             i++;
         }
         else
         {
             return true;
         }
     }

    return false;
}

int DoubleArrayTest()
{
     //7, [[1, 2, 8, 9], [2, 4, 9, 12], [4, 7, 10, 13], [6, 8, 11, 15]]
     int aiData[4][4] = {{1, 2, 8, 9}, {2, 4, 9, 12}, {4, 7, 10, 13}, {6, 8, 11, 15}};
     vector<vector<int>> res;

    cout << "初始化二位数组: " << endl;
     for (int i = 0; i < 4; i++)
     {
         vector<int> vect;
         for (int j = 0; j < 4; j++)
         {
             vect.push_back(aiData[i][j]);
         }
         res.push_back(vect);

        TraversalArray(res[i]);
     }

    if (FindNum(7, res))
     {
         cout << "true" << endl;
     }
     else
     {
         cout << "false" << endl;
     }

    return 0;
}

posted @ 2019-07-28 13:07  VIP丶可乐  阅读(98)  评论(0编辑  收藏  举报