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实现配置文件备份的方法
Jul 30 Python
21行Python代码实现拼写检查器
Jan 25 Python
python字典多键值及重复键值的使用方法(详解)
Oct 31 Python
Python Pandas 获取列匹配特定值的行的索引问题
Jul 01 Python
Python Numpy计算各类距离的方法
Jul 05 Python
python批量修改ssh密码的实现
Aug 08 Python
基于python2.7实现图形密码生成器的实例代码
Nov 05 Python
下载与当前Chrome对应的chromedriver.exe(用于python+selenium)
Jan 14 Python
python打开文件的方式有哪些
Jun 29 Python
Numpy中np.random.rand()和np.random.randn() 用法和区别详解
Oct 23 Python
python实现网络五子棋
Apr 11 Python
如何在C++中调用Python
May 21 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开发中常用的三个表单验证函数使用小结
2010/03/03 PHP
php下通过伪造http头破解防盗链的代码
2010/07/03 PHP
PHP 关于访问控制的和运算符优先级介绍
2013/07/08 PHP
php var_export与var_dump 输出的不同
2013/08/09 PHP
php创建和删除目录函数介绍和递归删除目录函数分享
2014/11/18 PHP
ASP.NET jQuery 实例1(在TextBox里面创建一个默认提示)
2012/01/13 Javascript
jQuery表单获取和失去焦点输入框提示效果的实例代码
2013/08/01 Javascript
window.onload和$(function(){})的区别介绍
2013/10/30 Javascript
jquery 扑捉回车键事件代码
2014/04/24 Javascript
JS继承用法实例分析
2015/02/05 Javascript
Angularjs实现多个页面共享数据的方式
2016/03/29 Javascript
Bootstrap零基础入门教程(三)
2016/07/18 Javascript
引用jquery框架后出错的解决方法
2016/08/09 Javascript
巧用Javascript的逻辑运算符
2016/12/02 Javascript
jQuery窗口拖动功能的实现代码
2017/02/04 Javascript
react-router实现跳转传值的方法示例
2017/05/27 Javascript
详解VUE 数组更新
2017/12/16 Javascript
解决npm管理员身份install时出现权限的问题
2018/03/16 Javascript
Servlet3.0与纯javascript通过Ajax交互的实例详解
2018/03/18 Javascript
微信小程序Getuserinfo解决方案图解
2018/08/24 Javascript
Node.js fs模块原理及常见用途
2020/10/22 Javascript
Python获取单个程序CPU使用情况趋势图
2015/03/10 Python
python函数形参用法实例分析
2015/08/04 Python
Python 使用SMTP发送邮件的代码小结
2016/09/21 Python
【Python】Python的urllib模块、urllib2模块批量进行网页下载文件
2016/11/19 Python
wxpython实现图书管理系统
2018/03/12 Python
python使用百度文字识别功能方法详解
2019/07/23 Python
如何使用python写截屏小工具
2020/09/29 Python
Python中pass的作用与使用教程
2020/11/13 Python
adidas菲律宾官网:adidas PH
2020/02/07 全球购物
詹天佑教学反思
2014/04/30 职场文书
2015年护理工作总结范文
2015/04/03 职场文书
建筑质检员岗位职责
2015/04/08 职场文书
家庭教育培训学习心得体会
2016/01/14 职场文书
mysql中between的边界,范围说明
2021/06/08 MySQL
解决flex布局中子项目尺寸不受flex-shrink限制
2022/05/11 HTML / CSS