专栏首页刷题笔记【剑指offer】二维数组中的查找

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

版权声明:本文为博主原创文章,遵循 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;
    }
};

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【牛客网】java基础选择题

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    韩旭051
  • 【PAT甲级】1002 A+B for Polynomials (25分)

    This time, you are supposed to find A+B where A and B are two polynomials.

    韩旭051
  • 【LeetCode】45. Jump Game II

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    韩旭051
  • 面向对象思想

    类:描述了具有相同特性(属性)和相同行为(操作方法)的对象。在程序中,类就是数据类型。

    lzugis
  • 如何让带有华硕固件的路由器桥接到你家里客厅的路由器?

    最近家里的台式机无线网卡正好坏了,家里正好有一个闲置的路由器,一条闲置的网线,网上正好有华硕的固件(好巧哦~),于是准备把客厅的路由器的Wifi信号桥接到我房间...

    lollipop72
  • 线性表的基本操作

    实现线性表的增加删除定位等功能。(编译执行环境vc6.0,因为目标院校上机考是用这个版本的)

    用户2417870
  • 堆排序算法的java实现

    堆积排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,可以利用数组的特点快速定位指定索引的元素。堆排序是不稳定的排序方法,...

    sanmutongzi
  • 三行代码接入,社交软件打字时底下弹出的表情布局,自定义ViewPager+页面点标+各种功能的android小框架。

    (转载请声明出处:https://cloud.tencent.com/developer/user/1148436/activities) 前言:       ...

    林冠宏-指尖下的幽灵
  • c语言实现TCP的socket通信

    ######################################## #makefile #############################...

    特立独行的猫a
  • 一个前端工程师的基本修养

    有人说互联网是前端工程师的舞台,先不论这个说法是否有些夸大其词,但前端工程师绝对撑起了互联网应用开发的“半壁江山”。随着传统网站、手机应用、桌面应用、微信小程序...

    企鹅号小编

扫码关注云+社区

领取腾讯云代金券