python实现杨氏矩阵查找


Posted in Python onMarch 02, 2019

本文实例为大家分享了python实现杨氏矩阵查找的具体代码,供大家参考,具体内容如下

问题描述:

在一个m行n列二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。有则返回1,无则返回0,输入错误返回input error

问题分析:根据杨氏矩阵的规律可知,左上角是最小元素,右下角是最大元素,进行比较一次只能排除一个。而利用左下角或者右上角对比,一次可以排除一行或一列。

AC代码以右上角为例:

  • 当右上角大于要查找的数字时,排除一行;
  • 当右上角大于要查找的数字时,排除一列;
  • 相等则返回1
  • 全部查找失败则返回0

代码如下:

# coding=utf-8
import sys

def solve():
  try:
    # 获取行(n)和列(m)
    a = sys.stdin.readline().split()
    n, m = int(a[0]), int(a[1])
    arr = []
    for i in range(n):
      # 列表模拟二维数组
      p = list(map(int, sys.stdin.readline().split()))
      arr.append(p)
    # 获取要查找的数
    s = int(sys.stdin.readline().strip())
    i = 0
    j = m - 1
    while i<n and j>=0:
      if arr[i][j] == s:
        # 相等返回1查找成功
        return 1
      elif arr[i][j] < s:
        # 小于要查找的元素,行加1
        i += 1
      else:
        # 大于要查找的元素,列加1
        j -= 1
    return 0
  except Exception:
    return "input error"


if __name__ == "__main__":
  print(solve())

如有疑问,欢迎交流和指正。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python根据出生年份简单计算生肖的方法
Mar 27 Python
Python while 循环使用的简单实例
Jun 08 Python
使用Python生成XML的方法实例
Mar 21 Python
python中模块的__all__属性详解
Oct 26 Python
python实现写数字文件名的递增保存文件方法
Oct 25 Python
对python的bytes类型数据split分割切片方法
Dec 04 Python
Python随机生成身份证号码及校验功能
Dec 04 Python
python中的decimal类型转换实例详解
Jun 26 Python
Pandas_cum累积计算和rolling滚动计算的用法详解
Jul 04 Python
使用OpenCV获取图片连通域数量,并用不同颜色标记函
Jun 04 Python
Python的scikit-image模块实例讲解
Dec 30 Python
Pygame Rect区域位置的使用(图文)
Nov 17 Python
Python3.4学习笔记之列表、数组操作示例
Mar 01 #Python
Python3.4学习笔记之常用操作符,条件分支和循环用法示例
Mar 01 #Python
Python3.4学习笔记之 idle 清屏扩展插件用法分析
Mar 01 #Python
Python3.4学习笔记之类型判断,异常处理,终止程序操作小结
Mar 01 #Python
Python判断两个文件是否相同与两个文本进行相同项筛选的方法
Mar 01 #Python
Python脚本按照当前日期创建多级目录
Mar 01 #Python
Python enumerate函数功能与用法示例
Mar 01 #Python
You might like
PHP防注入安全代码
2008/04/09 PHP
php url地址栏传中文乱码解决方法集合
2010/06/25 PHP
解析PHP中常见的mongodb查询操作
2013/06/20 PHP
PHP之浮点数计算比较以及取整数不准确的解决办法
2015/07/29 PHP
JSON PHP中,Json字符串反序列化成对象/数组的方法
2018/05/31 PHP
JavaScript 对象、函数和继承
2009/07/07 Javascript
js实现九宫格图片半透明渐显特效的方法
2015/02/16 Javascript
异步安全加载javascript文件的方法
2015/07/21 Javascript
jquery小火箭返回顶部代码分享
2015/08/19 Javascript
每天一篇javascript学习小结(Boolean对象)
2015/11/12 Javascript
详解JavaScript中的构造器Constructor模式
2016/01/14 Javascript
JS中Json数据的处理和解析JSON数据的方法详解
2016/06/29 Javascript
bootstrap常用组件之头部导航实现代码
2017/04/20 Javascript
小程序二次贝塞尔曲线实现购物车商品曲线飞入效果
2019/01/07 Javascript
一秒学会微信小程序制作table表格
2019/02/14 Javascript
element-ui组件table实现自定义筛选功能的示例代码
2019/03/15 Javascript
JavaScript Window窗口对象属性和使用方法
2020/01/19 Javascript
ES6中Promise的使用方法实例总结
2020/02/18 Javascript
Nodejs实现WebSocket代码实例
2020/05/19 NodeJs
详解JSON.stringify()的5个秘密特性
2020/05/26 Javascript
[01:13]这,就是刀塔
2014/07/16 DOTA
详解Django框架中用户的登录和退出的实现
2015/07/23 Python
Python中操作符重载用法分析
2016/04/29 Python
Python实现的递归神经网络简单示例
2017/08/11 Python
Python实现读取txt文件中的数据并绘制出图形操作示例
2019/02/26 Python
美国智能家居专家:tink
2019/06/04 全球购物
公司前台辞职报告
2014/01/19 职场文书
护士个人自我鉴定
2014/03/24 职场文书
改革共识倡议书
2014/08/29 职场文书
公司向个人借款协议书范本
2014/10/09 职场文书
公司会议开幕词
2015/01/29 职场文书
学校德育工作总结2015
2015/05/11 职场文书
班主任培训研修日志
2015/11/13 职场文书
2016年度先进班组事迹材料
2016/03/01 职场文书
Java tomcat手动配置servlet详解
2021/11/27 Java/Android
SQL注入篇学习之盲注/宽字节注入
2022/03/03 MySQL