• 《剑指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;
        }
    };
  • 相关阅读:
    工作中遇到新知识应该怎么办
    Java中的集合
    JSTL学习(二)自定义标签库
    别跟我扯依赖注入
    经典算法的分析
    Debian
    C 底层细节【转】
    C文件操作 【转】
    利用strstr和sscanf解析GPS信息
    算法学习建议 ACM()转
  • 原文地址:https://www.cnblogs.com/doudouyoutang/p/9897229.html
Copyright © 2020-2023  润新知