《剑指offer》 二维数组中的查找
本题目是《剑指offer》中的题目 二维数组中的查找
题目:
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
思路:
step1:首先取数组中右上角的数字
step2:判断如果等于目标值,则查找过程结束
step3:如果该数字大于目标值,剔除这个数字所在的列
step4:如果该数字小于目标值,剔除这个数在所在的行
C++ code
class Solution {
public:
bool Find(int target, vector<vector<int> > array) {
bool result = false; //返回结果值,默认为false,后期找到会更改此值
if (!array.empty()){ //审核数组是否为空,不为空进入,若为空,直接返回false
int rows = array.size(); //提取二维数组的行数
int row = ; //定义行迭代变量,从0开始迭代
int col = array[].size()-; //定义列迭代变量,从末尾开始迭代
while (row < rows && col >= ){ //循环结束条件为行或者列超标
if (array[row][col] == target){ //判断相等,更改返回值,并跳出循环
result = true;
break;
}else if (array[row][col] > target){//如果大于目标值则去掉行
col -= ;
}else{ //如果小于目标值则去掉列
row += ;
}
}
}
return result;
}
};
Python Code
# -*- coding:utf-8 -*-
class Solution:
# array 二维列表
def Find(self, target, array):
# write code here
result = False #该值后期当找到其值时候会被改变
if array: #审核边界条件
rows = len(array) #全部的行
row = 0 #迭代的行数
col = len(array[0])-1 #迭代的列数,遍历时候要减一开始
while row < rows and col >= 0: #条件是行列符合规则
if array[row][col] == target: #当找到该值时候
result = True #修改返回值,并且推出循环
break
elif array[row][col] > target:#当大于该值,去掉这一列
col -= 1
else: #当小于该值时候,去掉这一行
row += 1
return result
总结:
二维数组的遍历,自习查看该题目的特点,是有顺序的,所以要查找规律。仔细查看循环的遍历条件。
《剑指offer》 二维数组中的查找的更多相关文章
- (java)剑指offer二维数组中的查找
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从 上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. pu ...
- 剑指Offer 二维数组中的查找
题目描述 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 思路法一: * 矩阵是 ...
- 剑指Offer——二维数组中的查找
题目描述: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 分析: 因为二维数组 ...
- 剑指offer—二维数组中的查找
题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数 ...
- 用js刷剑指offer(二维数组中的查找)
题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数 ...
- 牛客网-剑指Offer 二维数组中的查找
题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数 ...
- 剑指Offer_4_二维数组中的查找
题目描述 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. ...
- 面试题5-[剑指offer] 二维数组中的查找
题目 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. ...
- 剑指offer--1.二维数组中的查找
题目:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. ...
- C#版剑指Offer-001二维数组中的查找
题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数 ...
随机推荐
- chrome性能分析
Chrome开发者工具之JavaScript内存分析 前端性能优化 —— 前端性能分析 Chrome DevTools - 性能监控
- Binary Tree HDU - 5573 (思维)
题目链接: B - Binary Tree HDU - 5573 题目大意: 给定一颗二叉树,根结点权值为1,左孩子权值是父节点的两倍,右孩子是两倍+1: 给定 n 和 k,让你找一条从根结点走到第 ...
- os及os.path练习题
查找目录下每个文件的数量(考察获取文件后缀名以及获取当前目录下文件方法) import os #获取目录下的所有文件 list = os.listdir('.') filetype = {} for ...
- 【转】python之配置日志的几种方式
[转]python之配置日志的几种方式 作为开发者,我们可以通过以下3种方式来配置logging: 1)使用Python代码显式的创建loggers, handlers和formatters并分别调用 ...
- MySQL中binlog参数:binlog_rows_query_log_events-记录具体的SQL【转】
在使用RBR也就是行格式的时候,去解析binlog,需要逆向才能分析出对应的原始SQL是什么,而且,里面对应的是每一条具体行变更的内容.当然,你可以开启general log,但如果我们需要的只是记录 ...
- python3+selenium框架设计02-自动化测试框架需要什么
什么是自动化测试框架 自动化测试框架能够提供便利给用户高效完成一些事情,比如,结构清晰开发脚本,多种方式.平台执行脚本,良好的日志和报告去跟踪脚本执行结果. 关于自动化测试框架的定义有很多,在我大致理 ...
- ObjectArx2013新建工程出错的解决办法
最近将一个ObjectArx升级到Arx2013版,使用ObjectArx2013向导时,新建项目时弹出错误"未能加载项目文件.给定编码中的字符无效.第1行,位置1",经网上查找发 ...
- Ionic-轮播图ion-slide-box
官方用法介绍:http://www.ionic.wang/js_doc-index-id-44.html 用法 <ion-slide-box> <ion-slide> < ...
- 持续集成之④:GitLab触发jenkins构建项目
持续集成之④:GitLab触发jenkins构建项目 一:目的为在公司的测试环境当中一旦开发向gitlab仓库提交成功代码,gitlab通知jenkins进行构建项目.代码质量测试然后部署至测试环境, ...
- 如何查看当前应用包名和activity
这里提供一个简单的方法来获取package和activity: 在Android模拟器上打开微信APP,然后打开CMD,输入以下命令: adb shell 接下来在#后面继续输入以下命令: logca ...