二维数组中的查找

来源:互联网 发布:aceplayer mac 编辑:程序博客网 时间:2024/06/15 22:54

题目:

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

思路:

先设置一个布尔值,默认为false,考虑从右上角开始比较。

如果target小于当前数字,因为每一列都按照从上到下递增的顺序排序,说明当前数字所在列都不符合条件,排除该列,

比较右边列的相邻数字。

如果target大于当前数字,因为每一行都按照从左到右递增的顺序排序说明当前数字所在行都不符合条件,排除该行,比较下边行的相邻数字。

如果target等于当前数字,布尔值设为true,跳出循环。

解答:

bool Offer::find(int target,vector<vector<int>> array){bool flag = false;int m = array.size()-1; //获取行数int n = array[0].size()-1; //获取列数int c= 0;while((c!=m+1)&&(n!=-1)){    //注意边界条件if(target == array[c][n]){flag = true;break;}if(target > array[c][n]){c++;continue;}if(target < array[c][n]){n--;continue;}}return flag;}


原创粉丝点击