剑指Offer(一):二维数组中的查找
2024-08-24 00:10:04
一、前言
刷题平台:牛客网
二、题目
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
1、思路
首先选取数组中右上角的数字。如果该数字等于要查找的数字,查找过程结束;如果该数字大于要查找的数组,剔除这个数字所在的列;如果该数字小于要查找的数字,剔除这个数字所在的行。也就是说如果要查找的数字不在数组的右上角,则每一次都在数组的查找范围中剔除一行或者一列,这样每一步都可以缩小查找的范围,直到找到要查找的数字,或者查找范围为空。
2、举例
如果在一个二维数组中找到数字7,则返回true,如果没有找到,则返回false。
查找过程如下:
3、编程实现
Python3:
# -*- coding:utf-8 -*-
class Solution:
# array 二维列表
def Find(self, target, array):
# write code here
rows = len(array)
cols = len(array[0])
if rows > 0 and cols > 0:
row = 0
col = cols - 1
while row < rows and col >= 0:
if target == array[row][col]:
return True
elif target < array[row][col]:
col -= 1
else:
row += 1
return False
或者:
# -*- coding:utf-8 -*-
class Solution:
# array 二维列表
def Find(self, target, array):
# write code here
rows = len(array)-1
cols = len(array[0])-1
i = rows
j = 0
while j<=cols and i>=0:
if target<array[i][j]:
i -= 1
elif target>array[i][j]:
j += 1
else:
return True return False
转载自:剑指Offer(一):二维数组中的查找 | Jack Cui
最新文章
- Java compiler level does not match解决方法
- mysql语句查询练习
- XE1:使用SSMS创建Extended Events
- karma与webpack结合
- AppleScript的字典怎么看怎么用
- mysql死锁问题解决步骤
- 游戏控制杆OUYA游戏开发快速入门教程
- mysql执行完select后,释放游标
- Thinking in java之正则表达式小例子
- Remoting,OData Snippet Compiler等
- copy con
- cocos2dx中的假动作,又称动作回调函数
- MSP430主系统时钟以及430的低功耗设置
- Android开发报错系列(一),java.lang.NullPointerException,at android.widget.ListView.setupChild
- 24种设计模式--代理模式【Proxy Pattern】
- 理解class.forName()(转)
- ASP.NET MVC用存储过程批量添加修改数据
- c++标准头文件
- C++各个存储区
- VMware 非简易安装centos6(静态ip配置)
热门文章
- HttpServletRespnse 对象 相关基本应用
- 双击Back退出应用 android中弹出吐司
- 填坑 | .NET core项目远程部署后连接数据库 mysql表大小写敏感问题
- 手写mybatis框架
- Java使用POI的SXSSFWorkbook与HSSFWorkbook导出复杂表头
- Python实践项目2
- php cookie及session
- Java程序取MySQL的datetime字段,如何消除时间尾后讨厌的";.0";
- postgres 无法删除表
- Idea没安装几款好用的插件,怎么风骚的写代码???