zoukankan      html  css  js  c++  java
  • 二维数组中的查找

    题目描述

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

    代码

    class Solution {
        vector<vector<int> > array;
        int target = 0;
    public:
        bool Find(int target, vector<vector<int> > array) {
            if (array.size() == 0) {
                return false;
            }
            this->array = array;
            this->target = target;
            return find(0, 0, array.size() - 1, array[0].size() - 1);
        }
    
        bool find( int x1, int y1, int x2, int y2) {
            if (x1 > x2 || y1 > y2) {
                return false;
            }
            if (x2 - x1 <= 1 && y2 - y1 <= 1) {
                return array[x1][y1] == target || array[x2][y2] == target || array[x1][y2] == target || array[x2][y1] == target;
             }
            int xm = (x1 + x2) >> 1;
            int ym = (y1 + y2) >> 1;
            
            if (target >= array[xm][ym] && target <= array[x2][y2] && find(xm, ym, x2, y2)) {//是否在右下角
                return true;
            }
            if (target >= array[xm][y1] && target <= array[x2][ym] && find(xm, y1, x2, ym)) {//是否下左下角
                return true;
            }
            if (target >= array[x1][ym] && target <= array[xm][y2] && find(x1, ym, xm, y2)) {//是否在右上角
                return true;
            }
            return target >= array[x1][y1] && target <= array[xm][ym] && find(x1, y1, xm, ym);//是否在左上角
        }
    };
    
    
  • 相关阅读:
    事件总线demo
    软件架构分类(转载)
    ASP.NET MVC 使用 Datatables (2)
    ASP.NET MVC 使用 Datatables (1)
    查看win10的激活信息和版本号
    2016年工作计划
    通俗粗暴的事件委托理解
    matplotlib系列——条形图
    matplotlib系列——折线图
    使用pip安装python模块和包
  • 原文地址:https://www.cnblogs.com/jecyhw/p/6535591.html
Copyright © 2011-2022 走看看