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使用smtplib模块通过gmail实现邮件发送的方法
May 08 Python
浅谈python抛出异常、自定义异常, 传递异常
Jun 20 Python
python3+PyQt5使用数据库表视图
Apr 24 Python
对python当中不在本路径的py文件的引用详解
Dec 15 Python
python简单实现矩阵的乘,加,转置和逆运算示例
Jul 10 Python
python中struct模块之字节型数据的处理方法
Aug 27 Python
python 内置函数汇总详解
Sep 16 Python
python ctypes库2_指定参数类型和返回类型详解
Nov 19 Python
Django restframework 框架认证、权限、限流用法示例
Dec 21 Python
Python多进程编程multiprocessing代码实例
Mar 12 Python
python右对齐的实例方法
Jul 05 Python
Python保存并浏览用户的历史记录
Apr 29 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实现上一篇下一篇的方法实例总结
2016/09/22 PHP
PHP迭代与递归实现无限级分类
2017/08/28 PHP
php 使用expat方式解析xml文件操作示例
2019/11/26 PHP
JS 面向对象之神奇的prototype
2011/02/26 Javascript
jquery选择器的选择使用及性能介绍
2013/01/16 Javascript
JQuery插件Marquee.js实现无缝滚动效果
2016/04/26 Javascript
用原生JS对AJAX做简单封装的实例代码
2016/07/13 Javascript
jQuery基本选择器之标签名选择器
2016/09/03 Javascript
angular+ionic 的app上拉加载更新数据实现方法
2017/01/16 Javascript
EsLint入门学习教程
2017/02/17 Javascript
JavaScript数据结构之二叉树的删除算法示例
2017/04/13 Javascript
JS实现的base64加密解密操作示例
2018/04/18 Javascript
JS实现电脑虚拟键盘打字测试
2020/06/24 Javascript
vue常用高阶函数及综合实例
2021/02/25 Vue.js
详解在Python中处理异常的教程
2015/05/24 Python
python抽象基类用法实例分析
2015/06/04 Python
python获取元素在数组中索引号的方法
2015/07/15 Python
python采用django框架实现支付宝即时到帐接口
2016/05/17 Python
Django 多表关联 存储 使用方法详解 ManyToManyField save
2019/08/09 Python
python实现名片管理器的示例代码
2019/12/17 Python
sklearn+python:线性回归案例
2020/02/24 Python
Python TKinter如何自动关闭主窗口
2020/02/26 Python
Python如何实现爬取B站视频
2020/05/20 Python
学习python需要有编程基础吗
2020/06/02 Python
keras训练曲线,混淆矩阵,CNN层输出可视化实例
2020/06/15 Python
Python OpenCV去除字母后面的杂线操作
2020/07/05 Python
LocalStorage记住用户和密码功能
2017/07/24 HTML / CSS
印尼最大的网上书店:Gramedia.com
2018/09/13 全球购物
2014个人年度工作总结范文
2014/12/24 职场文书
安全教育片观后感
2015/06/17 职场文书
初中团委工作总结
2015/08/13 职场文书
话题作文之生命的旋律
2019/12/17 职场文书
自动在Windows中运行Python脚本并定时触发功能实现
2021/09/04 Python
你需要掌握的20个Python常用技巧
2022/02/28 Python
MySQL数据库中的锁、解锁以及删除事务
2022/05/06 MySQL
Windows Server 2016服务器用户管理及远程授权图文教程
2022/08/14 Servers