题目描述:

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

思路:
1、直接使用查找的方式,当数组中的数字刚好等于target则返回true,否则返回false。可以考虑使用二分查找降低复杂度
2、可以判断,选择左下角的数字或者右上角的数字进行比较可以使问题变简单。

 1 //1、二分查找
 2 public class Solution {
 3     public boolean Find(int target, int [][] array) {
 4         for(int i = 0; i < array.length;i++){
 5             int low = 0,high = array[i].length-1;
 6             while(low<=high){
 7                 int mid = (low+high)/2;
 8                 if(target>array[i][mid]){
 9                     low = mid + 1;
10                 }
11                 else if(target<array[i][mid]){
12                     high = mid -1;
13                 }
14                 else
15                 {return true;}
16             }
17         }
18         return false;
19     }
20 }

 1 2、比较左下角或右上角的数
 2 public class Erweishuzuchazhao {
 3      public boolean Find(int target, int [][] array) {
 4          int x = array.length-1; int y = 0;
 5          while(x>=0&&y<array[0].length){
 6              if(target==array[x][y]) return true;
 7              else if(target<array[x][y]){
 8                 x--;
 9             }else {
10                 y++;
11             }
12          }
13          return false;
14
15         }
16     public static void main(String[] args) {
17         // TODO Auto-generated method stub
18         Erweishuzuchazhao erweishuzuchazhao = new Erweishuzuchazhao();
19         int target = 7;
20         int[][] array = {{1,2,8,9},{2,4,9,12},{4,7,10,13},{6,8,11,15}};
21         if(erweishuzuchazhao.Find(target, array)==true) System.out.println(true);
22     }
23
24 }

转载于:https://www.cnblogs.com/zlz099/p/8527193.html

剑指offer1:二维数组中的查找相关推荐

  1. python 二维数组长度_剑指offer二维数组中的查找【Java+Python】

    点击上方"蓝字",关注了解更多 二维数组中的查找 1. 题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序 ...

  2. 隔一段时间查找一次 golang_剑指 offer-04 二维数组中的查找

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

  3. 剑指0ffer04.二维数组中的查找

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

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

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

  5. 剑指Offer04. 二维数组中的查找

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

  6. 剑指offer - 二维数组中的查找

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

  7. 【二分法】剑指offer:二维数组中的查找

    对于二维数组中每一个一维数组,用二分查找,判断能否找到该数 leetcode专题笔记:二分法查找(1)(附leetcode题)_m0_52043808的博客-CSDN博客 代码: class Solu ...

  8. [剑指Offer]5.二维数组中的查找

    题目 在一个二维数组中,每一行都依照从左到右递增的顺序排序,每一列都依照从上到下递增的顺序排序.请完毕一个函数,输入这种一个二维数组和一个整数.推断数组中是否含有该整数. 思路 [算法系列之三十三]杨 ...

  9. 算法题001 剑指Offer 面试题三:二维数组中的查找

    剑指Offer题目1:二维数组中的查找 题目描述: http://ac.jobdu.com/problem.php?cid=1039&pid=0 在一个二维数组中,每一行都按照从左到右递增的顺 ...

  10. 剑指Offer #01 二维数组中的查找(Java描述)

    题目来源:牛客网-剑指Offer专题 题目地址:二维数组中的查找 题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一 ...

最新文章

  1. NET 5是.NET的未来:每个.Net开发人员必须知道什么
  2. Apache2.4x版本的403问题
  3. 如何通过Restful API的方式读取SAP Commerce Cloud的Product图片
  4. mysql内表和外表_Hive内表和外表的区别
  5. 广度优先遍历类似于二叉树的_二叉树的各种遍历方法的简单解释
  6. CVPR 2020|超越H.265,中科大使用多帧数据改进视频压缩新方法
  7. python里的英文歌叫什么_一首英文歌名最后是onshould
  8. zookeeper学习02 使用
  9. 基于yolo5工地安全帽和禁入危险区域识别系统,附数据集
  10. 第一个servlet
  11. 蓝宝石会升级bios吗_蓝宝石主板bios设置教程
  12. Win7 U盘安装Ubuntu16.04 双系统详细教程
  13. C#Socket客户端
  14. 新一代天气雷达信息共享平台
  15. ps关于去除脸上的痘痘问题和美白问题
  16. Python模块——标准库\开源模块\自定义模块
  17. cocos2d-js的(layer)生命周期,ctor,onEnter,onExit的使用
  18. Excel VBA 之 UBound
  19. 结构光、双目、ToF——三种3D技术对比
  20. 我是一个*** (九)

热门文章

  1. java1.7数据库access_Java 8读取Access数据库报错的问题——用32位Java 7
  2. 通过自定义Module实现URl重写和登陆验证
  3. 《构建高可用Linux服务器》答读者疑问
  4. 图解XP局域网共享设置教程汇总A
  5. 短时间让大家对C++ STL有所学习
  6. [原创]中秋随笔 祝大家中秋快乐
  7. C11头文件threads.h声明了创建和管理线程,信号,条件变量的函数
  8. SRP6针对于网游登录服的应用
  9. MySQL添加唯一约束和联合唯一约束(建表后添加)
  10. linux中查看mysql版本的方法汇总