算法名称:二维数组中的查找

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

解题思路:

首先选取数组中右上角的数字。如果该数字等于要查找的数字,查找过程结束;如果该数字大于要查找的数字,剔除这个数字所在的列;如果该数字小于要查找的数字,剔除这个数字所在的行。也就是说如果要查找的数字不在数组的右上角,则每一次都在数组的查找范围中剔除一行或者一列,这样每一步都可以缩小查找的范围,直到找到要查找的数字,或者查找范围为空。

例如,我们要在上述的二维数组中查找数字7的步骤如下图所示:

实例代码:

  • Java
class Solution {public boolean findNumberIn2DArray(int[][] matrix, int target) {if (matrix.length > 0 && matrix[0].length > 0) {int row = 0;int colomn = matrix[0].length - 1;while (row < matrix.length && colomn >= 0) {if (target < matrix[row][colomn]) {colomn--;} else if (target > matrix[row][colomn]) {row++;} else if (target == matrix[row][colomn]) {return true;}}}return false;}}

  • Golang版
func findNumberIn2DArray(matrix [][]int, target int) bool {if len(matrix) > 0 && len(matrix[0]) > 0 {row := 0colomn := len(matrix[0]) - 1for row < len(matrix) && colomn >= 0 {if target < matrix[row][colomn] {colomn--} else if target > matrix[row][colomn] {row++} else if target == matrix[row][colomn] {return true}}}return false}

本题考点:

  • 考察面试者对二维数组的理解及编程能力。二维数组在内存中占据连续的空间。在内存中从上到下存储各行元素,在同一行中按照从左到右的顺序存储。因此我们可以根据行号和列号计算出相对于数组首地址的偏移量,从而找到对应的元素。

隔一段时间查找一次 golang_剑指 offer-04 二维数组中的查找相关推荐

  1. 【LeetCode】剑指 Offer 04. 二维数组中的查找

    [LeetCode]剑指 Offer 04. 二维数组中的查找 文章目录 [LeetCode]剑指 Offer 04. 二维数组中的查找 package offer;public class Solu ...

  2. 利用指针数组计算2个3行4列矩阵的和_[剑指 Offer] 04. 二维数组中的查找

    难度:简单 题目链接:剑指 Offer 04. 二维数组中的查找 题目描述: 在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数, ...

  3. 剑指 Offer 04. 二维数组中的查找

    剑指 Offer 04. 二维数组中的查找 在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个高效的函数,输入这样的一个二维数组和一个 ...

  4. 【千字过程分析】剑指 Offer 04. 二维数组中的查找

    立志用最少的代码做最高效的表达 在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数 ...

  5. C语言二维数组找出交集,【leetcode C语言实现】剑指 Offer 04. 二维数组中的查找...

    题目描述 在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 示例: ...

  6. 数组中查找並返回数组_剑指 Offer 04. 二维数组中的查找

    1. 题目 力扣​leetcode-cn.com 2. 描述 在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二 ...

  7. Leetcode每日一题:剑指 Offer 04.(二维数组中的查找)

    思路:有序+查找元素,第一想到的就是二分法,所以我对每行采用二分法,每行的复杂度为O(m),那么总的复杂度就是O(nlogm):看题解从右上角开始,这个数比目标值大,就往左移一列,比目标值小,就往下移 ...

  8. 剑指offer 04.二维数组中的查找 我妹妹都看的懂的方法

    ⭐欢迎来到剑指offer好题精选专栏,一起学习,一起进步⭐ 题目信息: 在一个二维数组array中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请 ...

  9. 【LeetCode笔记】240. 搜索二维矩阵II 剑指 Offer 04 二维数组中的查找(Java、指针)

    文章目录 题目描述 思路 & 代码 更新版 题目描述 两道题一样的 有序 + 搜索,明摆着二分查找 但是比较懒-选取了题解里的指针做法= = 思路 & 代码 时间复杂度O(m + n) ...

  10. Leetcode 剑指 Offer 04. 二维数组中的查找 (每日一题 20210727)

    在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数.示例:现有矩 ...

最新文章

  1. python脚本 通过rsa private key 生成 publickey
  2. 周杰伦300多万NFT被黑客盗走,上链加密艺术就这??
  3. 家园签到:无忧币天天送,连续领礼更多!【家园帮助】
  4. python中的全局变量与局部变量
  5. 程序员的自我修养六可执行文件的装载与进程
  6. GCC中SIMD指令的应用方法
  7. AI说:你的书法有咖喱味丨看字识国别
  8. 发布 CodeAuto 代码生成器 2.1.0.461 中英文双语版
  9. matlab两矩阵相似性,两个矩阵同时相似对角化MATLAB程序.docx
  10. iOS相机、相册的访问权限
  11. 编译原理(第四版)胡元义第三章部分习题答案(2)
  12. 【Zeekr_Tech】汽车软件敏捷开发和分支管理
  13. layui table数据表格中数据返回成功,但页面不显示数据内容问题
  14. 面试官:hold住了八股和算法,扫码登录应该怎么实现你总不会了吧
  15. 一文读懂上拉电阻:工作原理和阻值确定
  16. 基于安卓android studio 的 菜谱食谱APP设计
  17. 内置CRC于文本文件中的方法
  18. php阿拉伯语字符串,PHP:如何检测输入字符串是否为阿拉伯语
  19. 2014/10/4 十大经典迷你美剧推荐
  20. Wust CTF 2020 黄金体验镇魂曲 writeup

热门文章

  1. 为何你的 SaaS 想法总是失败?没想清楚这 4 个原因可能会继续失败!
  2. 云+X案例展 | 金融类:荣之联助力君康人寿构建新一代数据中心
  3. 潘石屹接连带货 Python,要来抢我们的饭碗?
  4. git 撤销挂起的更改_小姐姐带你用Git
  5. koa-generator 快速生成 koa2 服务的脚手架工具
  6. 知识库使用VIEW视图实现内部用户、组关联关系和flowable内置表打通
  7. quarz cron表达式在线配置和运行看效果
  8. SpringMVC项目 使用IDEA快速构建
  9. java.sql.SQLSyntaxErrorException: ORA-00923: 未找到要求的 FROM 关键字
  10. 企业实战(Jenkins+GitLab+SonarQube)_09_jenkins发布项目到测试环境