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中splitlines()方法的使用简介
May 20 Python
Python实现LRU算法的2种方法
Jun 24 Python
Python简单实现子网掩码转换的方法
Apr 13 Python
Python正则表达式常用函数总结
Jun 24 Python
PyQt5每天必学之进度条效果
Apr 19 Python
Python SMTP发送邮件遇到的一些问题及解决办法
Oct 24 Python
python代码编写计算器小程序
Mar 30 Python
Python facenet进行人脸识别测试过程解析
Aug 16 Python
Python使用selenium + headless chrome获取网页内容的方法示例
Oct 16 Python
Scrapy框架实现的登录网站操作示例
Feb 06 Python
Python如何实现大型数组运算(使用NumPy)
Jul 24 Python
Python实现七个基本算法的实例代码
Oct 08 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实现redis限制单ip、单用户的访问次数功能示例
2018/06/16 PHP
PHP cookie与session会话基本用法实例分析
2019/11/18 PHP
优秀js开源框架-jQuery使用手册(1)
2007/03/10 Javascript
清华大学出版的事半功倍系列 javascript全部源代码
2007/05/04 Javascript
可插入图片的TEXT文本框
2013/12/27 Javascript
JS的encodeURI和java的URLDecoder.decode使用介绍
2014/05/08 Javascript
jQuery实现html表格动态添加新行的方法
2015/05/28 Javascript
jQuery模拟原生态App上拉刷新下拉加载更多页面及原理
2015/08/10 Javascript
微信小程序 Image API实例详解
2016/09/30 Javascript
jQuery实现的小图列表,大图展示效果幻灯片示例
2016/10/25 Javascript
HTML5基于Tomcat 7.0实现WebSocket连接并实现简单的实时聊天
2016/10/31 Javascript
微信小程序 textarea 组件详解及简单实例
2017/01/10 Javascript
深入理解Vue nextTick 机制
2018/04/28 Javascript
Vue使用高德地图搭建实时公交应用功能(地图 + 附近站点+线路详情 + 输入提示+换乘详情)
2018/05/16 Javascript
jQuery实现菜单的显示和隐藏功能示例
2018/07/24 jQuery
vue中当图片地址无效的时候,显示默认图片的方法
2018/09/18 Javascript
小程序实现悬浮搜索框
2019/07/12 Javascript
python安装Scrapy图文教程
2017/08/14 Python
python利用socketserver实现并发套接字功能
2018/01/26 Python
Pandas之Fillna填充缺失数据的方法
2019/06/25 Python
对python中assert、isinstance的用法详解
2019/11/27 Python
详解Django3中直接添加Websockets方式
2020/02/12 Python
css3 中实现炫酷的loading效果
2019/04/26 HTML / CSS
移动端HTML5开发神器之vconsole详解
2020/12/15 HTML / CSS
韩国流行时尚女装网站:Dintchina(中文)
2018/07/19 全球购物
西班牙高科技产品购物网站:MejorDeseo
2019/09/08 全球购物
设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。
2014/12/30 面试题
电脑租赁公司创业计划书
2014/01/08 职场文书
大学生两会学习心得体会
2014/03/10 职场文书
2014班子“三严三实”对照检查材料思想汇报
2014/09/18 职场文书
试用期转正员工自我评价
2014/09/18 职场文书
放牛班的春天观后感
2015/06/01 职场文书
公司回复函格式
2015/07/14 职场文书
Oracle 数据仓库ETL技术之多表插入语句的示例详解
2021/04/12 Oracle
Vue.Draggable实现交换位置
2022/04/07 Vue.js
古见同学有交流障碍症 第二季宣传CM公开播出
2022/04/11 日漫