【剑指offer】二维数组中的查找
- 2019 年 11 月 8 日
- 筆記
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/shiliang97/article/details/101649068
题目描述
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
问题代码
class Solution { public: bool Find(int target, vector<vector<int> > array) { int a=array.size(); int b=array[0].size(); if(b==0){ return false; } int maxx=a-1,maxy=b-1,minx=0,miny=0; while(array[(maxx+minx)/2][(miny+maxy)/2]!=target&&!(maxx!=minx||maxy!=miny)){ if(array[(maxx+minx)/2][(miny+maxy)/2]>target){ maxx=(maxx+minx)/2; maxy=(maxy+miny)/2; }else if(array[(maxx+minx)/2][(miny+maxy)/2]>target){ minx=(maxx+minx)/2; miny=(maxy+miny)/2; }else{ return true; } if(array[(maxx+minx)/2-1][(miny+maxy)/2]==target||array[(maxx+minx)/2][(miny+maxy)/2-1]==target){ return true; } } if(array[(maxx+minx)/2][(miny+maxy)/2]==target){ return true; } return false; } };
遍历就能过。。我非要想一个好的。。。我再课下想想吧~
AC代码
class Solution { public: bool Find(int target, vector<vector<int> > array) { int Wide_size = array.size(); int Long_size = array[0].size(); int i; int j; for (i = 0;i<Wide_size; i++) { for (j = 0; j < Long_size; j++) { if (target == array[i][j]) { return true; } } } return false; } };