您的位置:首页 > Web前端

【剑指offer系列】 二维数组中的查找___3

2016-04-06 14:26 281 查看
  题目描述:

  在一个二维数组中,每一行的元素都是从左到右递增的,每一列的元素都是从上到下递增的。

  请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

  示例:

  输入数组为:

  


  若待查找数字为9,则返回true

  若待查找数字为5,则返回false

  代码:

bool find(vector<vector<int> >& nums,int target){
int m=nums.size();
if(m==0)    return false;
int n=nums[0].size();
int row=0,col=n-1;
while(row<m&&col>=0){
if(nums[row][col]==target){
return true;
}
else if(nums[row][col]>target){   //比目标大时,向左查找
--col;
}
else{           //比目标小时,向右查找
++row;
}
}

return false;
}


  分析:

  从数组的右上角开始查找,若目标比该数大,则一定在该数下方,若目标比该数小,则一定在该数左边。一直重复该操作,直到找到目标元素为止

  如要查找的元素是10:

  1)初始时,row=0,col=3,nums[0][3]=9<10,则row++

  2)row=1,col=3,nums[1][3]=12>10,则col–

  3)row=1,col=2,nums[1][2]=9<10,则row++

  4)row=2,col=2,nums[2][2]=10,返回true
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: