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多线程方式执行多个bat代码
Jun 07 Python
python实现神经网络感知器算法
Dec 20 Python
python中将zip压缩包转为gz.tar的方法
Oct 18 Python
用pyqt5 给按钮设置图标和css样式的方法
Jun 24 Python
python实现beta分布概率密度函数的方法
Jul 08 Python
Python学习笔记之Django创建第一个数据库模型的方法
Aug 07 Python
python实现简单银行管理系统
Oct 25 Python
python通过文本在一个图中画多条线的实例
Feb 21 Python
Python 读取xml数据,cv2裁剪图片实例
Mar 10 Python
Python实现仿射密码的思路详解
Apr 23 Python
pycharm激活方法到2099年(激活流程)
Sep 22 Python
python中round函数保留两位小数的方法
Dec 04 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开发大型项目的一点经验
2006/10/09 PHP
example2.php
2006/10/09 PHP
THINKPHP项目开发中的日志记录实例分析
2014/12/01 PHP
php一个解析字符串排列数组的方法
2015/05/12 PHP
php读取torrent种子文件内容的方法(测试可用)
2016/05/03 PHP
PHP实现动态获取函数参数的方法示例
2018/04/02 PHP
laravel-admin表单提交隐藏一些数据,回调时获取数据的方法
2019/10/08 PHP
JS 学习笔记 防止发生命名冲突
2009/07/30 Javascript
基于jquery的滚动条滚动固定div(附演示下载)
2012/10/29 Javascript
JS中typeof与instanceof之间的区别总结
2013/11/14 Javascript
jquerymobile局部渲染的各种刷新方法小结
2014/03/05 Javascript
jquery+html5时钟特效代码分享(可设置闹钟并且语音提醒)
2020/03/30 Javascript
vue响应式系统之observe、watcher、dep的源码解析
2019/04/09 Javascript
Vue实现日历小插件
2019/06/26 Javascript
layui复选框限制选择个数的方法
2019/09/18 Javascript
Vue路由管理器Vue-router的使用方法详解
2020/02/05 Javascript
nodeJs项目在阿里云的简单部署
2020/11/27 NodeJs
rhythmbox中文名乱码问题解决方法
2008/09/06 Python
python实现从一组颜色中找出与给定颜色最接近颜色的方法
2015/03/19 Python
NLTK 3.2.4 环境搭建教程
2018/09/19 Python
对python while循环和双重循环的实例详解
2019/08/23 Python
python 单线程和异步协程工作方式解析
2019/09/28 Python
PyTorch实现ResNet50、ResNet101和ResNet152示例
2020/01/14 Python
python3.6连接mysql数据库及增删改查操作详解
2020/02/10 Python
将pytorch转成longtensor的简单方法
2020/02/18 Python
Python调用百度OCR实现图片文字识别的示例代码
2020/07/17 Python
python Zmail模块简介与使用示例
2020/12/19 Python
The Hut美国/加拿大:英国领先的豪华在线百货商店
2019/03/26 全球购物
新加坡交友网站:be2新加坡
2019/04/10 全球购物
2014年商场超市庆元旦活动方案
2014/02/14 职场文书
优秀的导游求职信范文
2014/04/06 职场文书
2015年小学开学寄语
2015/02/27 职场文书
如何理解Vue前后端数据交互与显示
2021/05/10 Vue.js
详解Laravel制作API接口
2021/05/31 PHP
MySql子查询IN的执行和优化的实现
2021/08/02 MySQL
前端JavaScript大管家 package.json
2021/11/02 Javascript