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实现读取目录所有文件的文件名并保存到txt文件代码
Nov 22 Python
详解Python设计模式编程中观察者模式与策略模式的运用
Mar 02 Python
Python中工作日类库Busines Holiday的介绍与使用
Jul 06 Python
Python标准库之itertools库的使用方法
Sep 07 Python
python通过getopt模块如何获取执行的命令参数详解
Dec 29 Python
python爬取淘宝商品销量信息
Nov 16 Python
Python 根据日志级别打印不同颜色的日志的方法示例
Aug 08 Python
python如何实现不可变字典inmutabledict
Jan 08 Python
AUC计算方法与Python实现代码
Feb 28 Python
Pytorch转keras的有效方法,以FlowNet为例讲解
May 26 Python
keras绘制acc和loss曲线图实例
Jun 15 Python
详解Python openpyxl库的基本应用
Feb 26 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 setcookie() cannot modify header information 的解决方法
2009/01/09 PHP
PHP中exec函数和shell_exec函数的区别
2014/08/20 PHP
php计算两个文件相对路径的方法
2015/03/14 PHP
php抽奖概率算法(刮刮卡,大转盘)
2020/04/17 PHP
几行代码轻松实现PHP文件打包下载zip
2017/03/01 PHP
PHP实现对图片的反色处理功能【测试可用】
2018/02/01 PHP
Aster vs Newbee BO5 第一场2.19
2021/03/10 DOTA
学习JS面向对象成果 借国庆发布个最新作品与大家交流
2009/10/03 Javascript
JS 动态获取节点代码innerHTML分析 [IE,FF]
2009/11/30 Javascript
仿猪八戒网左下角的文字滚动效果
2011/10/28 Javascript
jQuery下通过replace字符串替换实现大小图片切换
2012/05/22 Javascript
JS获取鼠标坐标的实例方法
2013/07/18 Javascript
使用js声明数组,对象在jsp页面中(获得ajax得到json数据)
2013/11/05 Javascript
jQuery中prepend()方法使用详解
2015/08/11 Javascript
JS实现的通用表单验证插件完整实例
2015/08/20 Javascript
javascript每日必学之封装
2016/02/23 Javascript
Angularjs手动解析表达式($parse)
2016/10/12 Javascript
jQuery实现发送验证码并60秒倒计时功能
2016/11/25 Javascript
vue模板语法-插值详解
2017/03/06 Javascript
vue webpack开发访问后台接口全局配置的方法
2018/09/18 Javascript
使用mixins实现elementUI表单全局验证的解决方法
2019/04/02 Javascript
原生js实现随机点餐效果
2019/12/10 Javascript
基于postman获取动态数据过程详解
2020/09/08 Javascript
Cpy和Python的效率对比
2015/03/20 Python
pytorch中如何使用DataLoader对数据集进行批处理的方法
2019/08/06 Python
Python pyautogui模块实现鼠标键盘自动化方法详解
2020/02/17 Python
python实现跨excel sheet复制代码实例
2020/03/03 Python
Python修改列表值问题解决方案
2020/03/06 Python
python 对一幅灰度图像进行直方图均衡化
2020/10/27 Python
基于Python的身份证验证识别和数据处理详解
2020/11/14 Python
会计毕业生自我鉴定
2013/11/04 职场文书
街道务虚会发言材料
2014/10/20 职场文书
党的群众路线教育实践活动整改方案
2014/10/28 职场文书
学校2016年全国助残日活动总结
2016/04/01 职场文书
2016年幼儿园万圣节活动总结
2016/04/05 职场文书
PostgreSQL将数据加载到buffer cache中操作方法
2021/04/16 PostgreSQL