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 16 Python
Python的math模块中的常用数学函数整理
Feb 04 Python
Python实现的redis分布式锁功能示例
May 29 Python
Python3使用turtle绘制超立方体图形示例
Jun 19 Python
pandas 读取各种格式文件的方法
Jun 22 Python
python如何创建TCP服务端和客户端
Aug 26 Python
Python实现FTP弱口令扫描器的方法示例
Jan 31 Python
python3 字符串/列表/元组(str/list/tuple)相互转换方法及join()函数的使用
Apr 03 Python
python GUI库图形界面开发之PyQt5菜单栏控件QMenuBar的详细使用方法与实例
Feb 28 Python
Python3.x+pyqtgraph实现数据可视化教程
Mar 14 Python
pytorch model.cuda()花费时间很长的解决
Jun 01 Python
python中tkinter复选框使用操作
Nov 11 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
《星际争霸》各版本雷兽特点图文解析 雷兽不同形态一览
2020/03/02 星际争霸
php页面函数设置超时限制的方法
2014/12/01 PHP
Yii的Srbac插件用法详解
2016/07/14 PHP
jquery URL参数判断,确定菜单样式
2010/05/31 Javascript
location.href语句与火狐不兼容的问题
2010/07/04 Javascript
Web 前端设计模式--Dom重构 提高显示性能
2010/10/22 Javascript
再次分享18个非常棒的jQuery表格插件
2011/04/10 Javascript
jQuery-serialize()输出序列化form表单值的方法
2012/12/26 Javascript
JS使用ajax从xml文件动态获取数据显示的方法
2015/03/24 Javascript
jquery实现动静态条形统计图
2015/08/17 Javascript
js滚动条平滑移动示例代码
2016/03/29 Javascript
jQuery EasyUI 右键菜单--关闭标签/选项卡的简单实例
2016/10/10 Javascript
使用jquery如何获取时间
2016/10/13 Javascript
基于JS快速实现导航下拉菜单动画效果附源码下载
2016/10/27 Javascript
Angular页面间切换及传值的4种方法
2016/11/04 Javascript
jQuery插件zTree实现的基本树与节点获取操作示例
2017/03/08 Javascript
详解Angular6.0使用路由步骤(共7步)
2018/06/29 Javascript
Vue.js 十五分钟入门图文教程
2018/09/12 Javascript
使用nvm和nrm优化node.js工作流的方法
2019/01/17 Javascript
原生JS forEach()和map()遍历的区别、兼容写法及jQuery $.each、$.map遍历操作
2019/02/27 jQuery
微信小程序网络层封装的实现(promise, 登录锁)
2019/05/08 Javascript
vue App.vue中的公共组件改变值触发其他组件或.vue页面监听
2019/05/31 Javascript
mpvue 页面预加载新增preLoad生命周期的两种方式
2019/10/17 Javascript
[01:45]绝对公平!DOTA2队长征召模式详解
2014/04/25 DOTA
使用Python进行AES加密和解密的示例代码
2018/02/02 Python
python单例模式获取IP代理的方法详解
2018/09/13 Python
pandas.dataframe按行索引表达式选取方法
2018/10/30 Python
Python3实现获取图片文字里中文的方法分析
2018/12/13 Python
使用Python自动化破解自定义字体混淆信息的方法实例
2019/02/13 Python
用python wxpy管理微信公众号并利用微信获取自己的开源数据
2019/07/30 Python
python3 enum模块的应用实例详解
2019/08/12 Python
python已协程方式处理任务实现过程
2019/12/27 Python
python导入库的具体方法
2020/06/18 Python
外语学院毕业生的自我鉴定
2013/11/28 职场文书
综合素质自我评价评语
2015/03/06 职场文书
公司员工培训管理制度
2015/08/04 职场文书