点击上方"蓝字",关注了解更多

二维数组中的查找

1. 题目描述

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

2. 示例

现有矩阵 matrix 如下:

[ [1, 4, 7, 11, 15],

[2, 5, 8, 12, 19],

[3, 6, 9, 16, 22],

[10, 13, 14, 17, 24],

[18, 21, 23, 26, 30] ]

给定 target = 5,返回 true。

给定 target = 20,返回 false。

3. 解题思路

使用以下方法的前提是:该矩阵是有序的。

从矩阵的左下角开始搜索,即从18 开始查找,如果该数大于目标数,则 行数 减去 1,向上搜索小的数值;

如果小于目标数,则 列数 + 1 ,向右边搜索,搜索更大的数值

4. Java实现

// Java语言实现public class Solution {    public boolean Find(int target, int [][] array) {        int row = array.length-1;        int col = 0;          // 从左下角开始搜索,array.length 表示行的大小,array[0].length表示列的大小

        while (row >= 0 && col <= array[0].length-1){            if (array[row][col] == target){                return true;            }else if(array[row][col] > target){                row--;            }else{                col++;            }

        }        return false;

    }}

5. Python实现

class Solution(object):    def searchMatrix(self, matrix, target):        """        :type matrix: List[List[int]]        :type target: int        :rtype: bool        """

        if not matrix:            return False

        rows, cols = len(matrix), len(matrix[0])        #从左下角开始搜索        row, col = rows - 1, 0        while row >= 0 and col <= cols-1:            if matrix[row][col] == target:                return True             elif matrix[row][col]                 col += 1            else:                row -= 1 # row一直减少        return False

如果您觉得本文有用,请点个“在看”

精彩推荐

Java开发微服务畅购商城实战-全357集【附代码课件】

Java微服务实战谷粒商城-296集【附代码课件】

Spring Boot开发小而美的个人博客【附课件和源码】

基于Python flask框架的租房项目实战【附资料和源码】

PyQt5开发与实战视频【附课件和源码】

最全最详细数据结构与算法视频-【附课件和源码】

2020年微信小程序全栈项目之喵喵交友【附课件和源码】

你点的每一个在看,我都认真当成了喜欢

python 二维数组长度_剑指offer二维数组中的查找【Java+Python】相关推荐

  1. java单个数组求积_[剑指offer][Java]构建乘积数组

    题目 给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]A[1]...A[i-1]A[i+1]...A[n-1].不能使用除法. 程 ...

  2. asp 判断数组等于_剑指Offer(牛客版)--面试题4:二维数组中的查找

    SCDN博客:https://blog.csdn.net/weixin_41923658 微信公众号:「汤姆鱼」 -------------------------------------手动分割线- ...

  3. 剑指offer python实现_剑指Offer第2题详解(附Python、Java代码实现)

    题目描述 请实现一个函数,将一个字符串中的每个空格替换成"%20".例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. 这个题较为 ...

  4. python删除链表中重复的节点_剑指offer:删除链表中重复的节点

    题目描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 例如,链表1->2->3->3->4->4->5 处理后 ...

  5. 8. 返回数组里出现次数最多的数字_剑指offer 数组中出现次数超过一半的数字

    题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2. ...

  6. leetcode 打印_剑指 Offer 总结 - leetcode 剑指offer系列

    剑指 Offer 系列完结撒花!! 本篇文章是对整个系列的精华总结, 对系列的每篇文章进行了分类, 并用一句话概括每道题的思路, 方便大家理解和记忆, 当然也包含原文完整链接供大家参考 总的来说, 写 ...

  7. 【剑指offer】数据结构——数组

    目录 数据结构--数组 直接解 [剑指offer]03.数组中重复的数字 排序法 集合法 原地置换 [剑指offer]04. 二维数组中的查找 [剑指offer]29. 顺时针打印矩阵 [剑指offe ...

  8. 【LeetCode】剑指 Offer 11. 旋转数组的最小数字

    [LeetCode]剑指 Offer 11. 旋转数组的最小数字 文章目录 [LeetCode]剑指 Offer 11. 旋转数组的最小数字 一.遍历 二.二分法 总结 一.遍历 算法步骤: 遍历数组 ...

  9. 字符串全排列算法_C#版_剑指OFFER

    字符串全排列算法_C#版_剑指OFFER 题目描述 ​题目描述 输入一个长度为 n 字符串,打印出该字符串中字符的所有排列,你可以以任意顺序返回这个字符串数组. 例如输入字符串ABC,则输出由字符A, ...

最新文章

  1. hdu 2518 Dominoes
  2. 潘石屹 python 知乎_如何看待地产大佬潘石屹微博宣布学习python这件事?对我们有什么启发?...
  3. Parallel小记
  4. html情侣计时器,情侣计时间的app,有没有什么计算情侣在一起 或
  5. android 无法运行 项目红叉_Android Studio 项目报红叉没法运行的几种解决办法总结...
  6. linux内存管理之RSS和VSZ的区别
  7. 如何打开mysql数据库?
  8. 银河麒麟高级服务器操作系统V10——安装Tuxedo12
  9. 可视化 | 人物画像的设计方法
  10. 幻想世界正在连接服务器,旅行物语桌面版连接不上怎么办 pc电脑版无法连接服务器怎么办...
  11. Farmer John 木瓜地 C++
  12. LiveData介绍
  13. centOS之php-fpm不可用
  14. HbuilderX 小程序转快应用
  15. 数据处理-500行Python代码处理ave/chunk命令下1d和2d分块数据
  16. 20182316胡泊 第2,3周学习总结
  17. python 多线程利器-tomorrow
  18. 日暮下的东汉-外戚、宦官与党锢
  19. 配合清退工作,建议将金融科技纳入监管沙盒
  20. 最小权点覆盖集 与 最大权独立集

热门文章

  1. 纷享销客完成新一轮数亿元融资,持续领跑中国CRM产业发展
  2. 10 张令人喷饭的程序员漫画
  3. 电脑卡在正在启动windows界面_让 Linux 启动更快
  4. java 方法保存变量_java – 在初始化对象或将其保存为变量并调用该方法时,调用方法的速度更快...
  5. python zip压缩_Python zip压缩与解压(zipfile模块实例)
  6. 学之思开源考试系统 - 使用手册
  7. linux根文件系统 /etc/resolv.conf 文件详解
  8. 企业实战_14_MyCat跨分片查询_全局表
  9. No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK? ide
  10. Java-Scanner进阶使用