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;
        }
    };
  • 相关阅读:
    日期处理工具类
    本地存储
    wangeditor富文本编辑器的使用
    vue+axios 拦截器及使用
    angular引入bootstrap-slider无效问题
    解决vscode导致电脑卡顿问题
    vue组件
    vue框架制作TodoList
    vue框架
    jQuery系列09
  • 原文地址:https://www.cnblogs.com/doudouyoutang/p/9897229.html
Copyright © 2011-2022 走看看