1、 在一个排序的二维数组中,查找某个整数

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

题目描述

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

解法一:

使用二分法查找实现

class Solution 
{
    public:
    bool Find(int target, vector<vector<int> > array) {
        for(int i=0;i<array.size();i++)
        {
            int low=0;
            int high=array[i].size()-1;
            while(low<=high)
            {//实现每列遍历 二分法
                int mid=(low+high)/2;
                if(target>array[i][mid])
                    low=mid+1;
                else if(target<array[i][mid])
                    high=mid-1;
                else
                    return true;
            }
        }
        return false;
    }
};

运行时间;10ms 1500k

解法二

利用二维数组由上到下,由左到右递增的规律,选取右上角或者左下角的元素a[row][col]与target进行比较,

当target小于元素a[row][col]时,那么target必定在元素a所在行的左边,即col--;

当target大于元素a[row][col]时,那么target必定在元素a所在列的下边,即row++;

以下选择的是右上角的实现:

class Solution {
    public:
    bool Find(int target, vector<vector<int>> array) {
        int row=0;
        int col=array[0].size()-1;
        while(row<=array.size()-1&&col>=0){
            if(target==array[row][col])
                return true;
            else if(target>array[row][col])
                row++;
            else
                col--;
        }
        return false;
    }
};

运算时间 13ms 1508k

目录
相关文章
|
7月前
|
缓存 前端开发 数据安全/隐私保护
如何使用组合组件和高阶组件实现复杂的 React 应用程序?
如何使用组合组件和高阶组件实现复杂的 React 应用程序?
289 68
|
11月前
|
搜索推荐 数据挖掘 API
阿里巴巴API接口对电商的影响与收益
在全球电子商务快速发展的背景下,阿里巴巴作为领先的B2B平台,为中小企业提供商品批发、分销、供应链管理等一站式服务,并通过开放的API接口为开发者和电商企业提供数据资源与功能支持。本文将深入解析阿里巴巴API接口的功能(如商品搜索、详情、订单和用户管理)、应用(如商品展示、搜索优化、交易管理和用户行为分析)、收益(如流量增长、销售提升、库存优化)及实际案例,附带代码示例,助力电商从业者提升运营效率和用户体验。
379 0
|
机器人
给 Mac 添加右键菜单「使用 VSCode 打开」
如何在 Mac 下右键文件或文件夹,直接通过菜单项「用 VSCode 打开」。
813 2
|
数据可视化 计算机视觉 异构计算
确保您已经安装了必要的库,包括`torch`、`torchvision`、`segmentation_models_pytorch`、`PIL`(用于图像处理)和`matplotlib`(用于结果可视化)。您可以使用pip来安装这些库:
确保您已经安装了必要的库,包括`torch`、`torchvision`、`segmentation_models_pytorch`、`PIL`(用于图像处理)和`matplotlib`(用于结果可视化)。您可以使用pip来安装这些库:
|
机器学习/深度学习 算法 物联网
小白上手AIGC-基于PAI-DSW部署Stable Diffusion文生图Lora模型
讲述基于PAI-DSW部署Stable Diffusion文生图Lora模型以及文生图效果展示
小白上手AIGC-基于PAI-DSW部署Stable Diffusion文生图Lora模型
|
Ubuntu 网络协议 Python
|
存储 监控 调度
OpenStack
OpenStack
444 0
|
存储 关系型数据库 MySQL
MySQL查询执行计划详解(EXPLAIN)
一、单表查询 访问方法/访问类型: • const:通过主键值或唯一二级索引与一个常熟进行等值查询(不包括NULL),只会生成一条记录 • ref:普通二级索引与一个常数进行等值比较,可能生成多条记录 • ref_or_null:ref的前提下可以加上or key is null • range:对应的扫描区间为若干个单点扫描区间或范围扫描区间(不包括负无穷到正无穷的范围) • index:扫描区间为全表,但是可以在二级索引中扫描(因为二级索引每条记录占用空间更小,所以需要读的页更少) • all:直接扫描全部的聚集索引记录
|
弹性计算 对象存储 CDN
阿里云服务器公网带宽价格表
2023阿里云服务器公网带宽价格表,阿里云百科以北京地域为例,按固定带宽计费1M带宽一个月23元,按使用流量计费1GB流量0.8元,如果云服务器带宽使用率低于10%,那么首选按使用流量计费,如果带宽实际利用率较高的话,按固定带宽计费更划算一些
439 0
阿里云服务器公网带宽价格表
|
JavaScript 网络架构
vue-router 如何找到路由组件?matcher 总结,vue-router Matcher 解析(四)
这篇是 vue-router matcher 系列的总结篇,这里提示一下 matcher 就是 vue-router 中的路由匹配器,负责路由的增删查,当我们进行路由跳转时,是通过 matcher 去匹配到正确路径,然后拿到 component(重定向除外)