zoukankan      html  css  js  c++  java
  • 《剑指offer

    题目描述

    在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
     
    开始想到的是从左上角开始搜索,这样搜索可能重复,可以标记去重。
    但是从左下角开始向右上角搜索比较高效。
     
    测试数据集
        //[[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]]
        std::vector<std::vector<int>> array = {{1,2,8,9},
                                               {2,4,9,12},
                                               {4,7,10,13},
                                               {6,8,11,15}};
        
        Solution s;
        cout<<s.Find(15, array);
    

    代码:

    #include <stdlib.h>
    #include <vector>
    
    using namespace std;
    class Solution {
    public:
        bool Find(int target, vector<vector<int>> array) {
            return this->Search2(target, array, (int)(array.size())-1, 0);
        }
        
        bool Search1(int target, vector<vector<int>> array, int x, int y) {
            
            if(x < array.size() && y < array[x].size())
            {
                if(target == array[x][y])
                {
                    return true;
                }
                else if(target > array[x][y])
                {
                    return  (this->Search1(target, array, x, y+1) ||
                             this->Search1(target, array, x+1, y));
                }
            }
            return false;
        }
        
        
        //从左下角往上往右的方向寻找,最简单
        bool Search2(int target, vector<vector<int>> array, int x, int y) {
            
            if(x < array.size() && y < array[x].size())
            {
                if(target == array[x][y])
                {
                    return true;
                }
                else if(target < array[x][y])
                {
                    return this->Search2(target, array, x-1, y);
                }
                else
                {
                    return this->Search2(target, array, x, y+1);
                }
      
            }
            return false;
        }
    };
  • 相关阅读:
    mysql学习-变量
    车联网-商业模式思考
    数据质量-备忘录
    对话机器学习大神 Michael Jordan:解析领域中各类模型
    Python 高级编程技巧
    Python-闭包(转载)
    PEP8中文翻译
    python-子类和派生、继承
    ZooKeeper之分布式锁(Python版)
    ssh 代理详细解释
  • 原文地址:https://www.cnblogs.com/doudouyoutang/p/9897229.html
Copyright © 2011-2022 走看看