题目描述:

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

解题思路:

因为这个二维数组每一行每一列的排序是有规律的。所以我们选择右上角的数,与target数进行比较。如果其小于target,则左移,如果其大于target 数,则下移。

即:如果array[ row][col] > target 则向左走 即 col--

       如果array[ row][col] < target 则向下走 即 row++

具体代码如下:代码一:(python版)

# -*- coding:utf-8 -*-
class Solution:# array 二维列表def Find(self, target, array):if len(array)<=0:return False#数组的行数和列数rows = len(array)-1cols = len(array[0])-1row = 0  #定义一个变量while row <=rows and cols>=0:  # 取右上角的值和target进行比较;if array[row][cols] == target:return Trueelif array[row][cols]> target:cols -= 1else:row += 1return False

代码二:(c++版本)

class Solution {
public:bool Find(int target, vector<vector<int> > array) {// array是二维数组,这里没做判空操作int rows = array.size();int cols = array[0].size();//先做一下数组是否为空的判断if (rows == 0 || cols == 0)return false;if (target < array[0][0] || target > array[rows - 1][cols - 1])return false;int i=rows-1,j=0;//左下角元素坐标while(i>=0 && j<cols){//使其不超出数组范围if(target<array[i][j])i--;//查找的元素较少,往上找else if(target>array[i][j])j++;//查找元素较大,往右找elsereturn true;//找到 }return false;}
};

小虾都尝试了一下,运行都能通过呀!

【剑指offter】二维数组中的查找相关推荐

  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. leetcode|剑指offter|面试题4:二维数组中的查找

    面试题04. 二维数组中的查找 问题描述 在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判 ...

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

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

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

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

最新文章

  1. 行代码实现数据集可视化、分析与比较
  2. linux回到初始的命令,Linux基础总结简单常用命令
  3. php扩展memcached和memcache的安装配置方法
  4. 深度学习(1)深度学习初见
  5. linux-mv移动更名-硬链接
  6. 【MySQL】MySQL 8 PROCEDURE ANALYSE命令使用
  7. Scratch:海龟绘图(九)
  8. 计算机名ip自动配置文件,[已解决]批处理如何根据网卡MAC地址自动设置IP和计算机名?...
  9. com.autonavi.amap.mapcore.MapCore.nativeNewInstance:(Ljava/lang/String;Ljava/lang/String;)J
  10. android9 apk自动安装功能,Android自动安装APK
  11. 阿拉伯数字 0、1、2、3、4、5、6、7、8、9 书写规范
  12. 2018年世界杯助力优酷重返第一,也成为视频行业的分水岭
  13. html5互动场景制作系统,春哥技术博客高仿易企秀H5场景应用制作平台源码V1.0正式版发布...
  14. Android蓝牙打印服务,Android 模拟蓝牙打印机
  15. 怎么用计算机录制mp3的音频,如何在电脑上录音详细图文教程
  16. 这是一个全民销售的时代
  17. 计算机课 - 计算机科学导论
  18. 科技文献检索(十一)——常用文摘型数据库
  19. 做网站申请域名有什么方法?
  20. Totam animi repellendus consequuntur ad.Deserunt temporibMous nulla soluta distinctio voluptas esse.

热门文章

  1. 阿里云DataHub常见问题
  2. android+智能家居控制系统,基于Android的智能家居控制系统设计与实现
  3. 单片机c语言中p1asf,基于51单片机的蓄水池自动控制系统 毕业设计.doc
  4. 【U盘被莫名分成两个盘我们该怎么合盘?】
  5. vue 动态生成下载二维码
  6. JQuery语法知识
  7. mysql 删除的三种方法_mysql 删除表数据的三种方法
  8. hbase major compact脚本
  9. php unix时间戳 秒,UNIX时间戳怎么在php项目中使用
  10. 穿透路由器,解决内网远程桌面等