【剑指offter】二维数组中的查找
题目描述:
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
解题思路:
因为这个二维数组每一行每一列的排序是有规律的。所以我们选择右上角的数,与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】二维数组中的查找相关推荐
- python 二维数组长度_剑指offer二维数组中的查找【Java+Python】
点击上方"蓝字",关注了解更多 二维数组中的查找 1. 题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序 ...
- 隔一段时间查找一次 golang_剑指 offer-04 二维数组中的查找
算法名称:二维数组中的查找 题目内容:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整 ...
- 剑指0ffer04.二维数组中的查找
在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 示例: 现 ...
- 剑指Offer 二维数组中的查找
题目描述 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 思路法一: * 矩阵是 ...
- 剑指Offer04. 二维数组中的查找
在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 相当于二叉 ...
- 剑指offer - 二维数组中的查找
题目描述 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. /* 思路 * 矩阵是 ...
- 【二分法】剑指offer:二维数组中的查找
对于二维数组中每一个一维数组,用二分查找,判断能否找到该数 leetcode专题笔记:二分法查找(1)(附leetcode题)_m0_52043808的博客-CSDN博客 代码: class Solu ...
- leetcode|剑指offter|面试题4:二维数组中的查找
面试题04. 二维数组中的查找 问题描述 在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判 ...
- [剑指Offer]5.二维数组中的查找
题目 在一个二维数组中,每一行都依照从左到右递增的顺序排序,每一列都依照从上到下递增的顺序排序.请完毕一个函数,输入这种一个二维数组和一个整数.推断数组中是否含有该整数. 思路 [算法系列之三十三]杨 ...
- 算法题001 剑指Offer 面试题三:二维数组中的查找
剑指Offer题目1:二维数组中的查找 题目描述: http://ac.jobdu.com/problem.php?cid=1039&pid=0 在一个二维数组中,每一行都按照从左到右递增的顺 ...
最新文章
- 行代码实现数据集可视化、分析与比较
- linux回到初始的命令,Linux基础总结简单常用命令
- php扩展memcached和memcache的安装配置方法
- 深度学习(1)深度学习初见
- linux-mv移动更名-硬链接
- 【MySQL】MySQL 8 PROCEDURE ANALYSE命令使用
- Scratch:海龟绘图(九)
- 计算机名ip自动配置文件,[已解决]批处理如何根据网卡MAC地址自动设置IP和计算机名?...
- com.autonavi.amap.mapcore.MapCore.nativeNewInstance:(Ljava/lang/String;Ljava/lang/String;)J
- android9 apk自动安装功能,Android自动安装APK
- 阿拉伯数字 0、1、2、3、4、5、6、7、8、9 书写规范
- 2018年世界杯助力优酷重返第一,也成为视频行业的分水岭
- html5互动场景制作系统,春哥技术博客高仿易企秀H5场景应用制作平台源码V1.0正式版发布...
- Android蓝牙打印服务,Android 模拟蓝牙打印机
- 怎么用计算机录制mp3的音频,如何在电脑上录音详细图文教程
- 这是一个全民销售的时代
- 计算机课 - 计算机科学导论
- 科技文献检索(十一)——常用文摘型数据库
- 做网站申请域名有什么方法?
- Totam animi repellendus consequuntur ad.Deserunt temporibMous nulla soluta distinctio voluptas esse.