zoukankan      html  css  js  c++  java
  • 剑指offer:二维数组查找

    题目描述

    在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
     
    这题LeetCode上刷过原题。。
    选择右上角或者左下角开始查找,因为对应的两个坐标能实现值得增加和减少,然后通过和target比较来进行移动。、
    这题我老错在坐标边界的判断,还是太菜了。
     
    class Solution {
    public:
        bool Find(int target, vector<vector<int> > array) {
            if(array.empty()) return false;
            int i = 0;
            int j = array[0].size() - 1;
            int len = array.size();
            while(i < len && j >= 0){
                if(array[i][j] < target){
                    i++;
                }else if(array[i][j] > target){
                    j--;
                }else{
                    return true;
                }
            }
            return false;
        }
    };

    还有二分查找,这个思路还是不太能第一时间想出来,就是分行二分查找

    写的有点丑不过思路好理解。。

    class Solution {
    public:
        bool Find(int target, vector<vector<int> > array) {
            if(array.empty()) return false;
            for(int i = 0; i < array.size(); i++){
                int low = 0, high = array[i].size() - 1;
                while(low <= high){
                    int mid = (low + high) / 2;
                    if(array[i][mid] > target){
                        high = mid - 1;
                        continue;
                    }
                    else if(array[i][mid] < target){
                        low = mid + 1;
                        continue;
                    }else{
                        return true;
                    }
                }
            }
            return false;
        }
    };
  • 相关阅读:
    Xamarin.Forms移动开发系列1:介绍和安装
    网络协议 1
    07 MySQL之索引原理
    06 Navicat安装及简单使用
    05 Mysql之多表查询
    04 Mysql之单表查询
    03 Mysql数据库之(行记录)详细操作
    02 Mysql之库表简易操作
    01 Mysql数据库初识
    07 Python之协程
  • 原文地址:https://www.cnblogs.com/BillowJ/p/12669970.html
Copyright © 2011-2022 走看看