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中method的参数传递过程
Apr 02 Python
Python合并多个装饰器小技巧
Apr 28 Python
分享一个可以生成各种进制格式IP的小工具实例代码
Jul 28 Python
python 实现对文件夹内的文件排序编号
Apr 12 Python
Tensorflow使用tfrecord输入数据格式
Jun 19 Python
利用pandas读取中文数据集的方法
Jul 25 Python
Django contenttypes 框架详解(小结)
Aug 13 Python
更新修改后的Python模块方法
Mar 03 Python
pytorch中的自定义数据处理详解
Jan 06 Python
python画环形图的方法
Mar 25 Python
PyCharm2020.3.2安装超详细教程
Feb 08 Python
教你怎么用Python生成九宫格照片
May 20 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表单文件iframe异步上传实例讲解
2017/07/26 PHP
laravel自定义分页效果
2017/07/23 PHP
用javascript实现计算两个日期的间隔天数
2007/08/14 Javascript
HTML颜色选择器实现代码
2010/11/23 Javascript
JavaScript 学习笔记之语句
2015/01/14 Javascript
javascript比较语义化版本号的实现代码
2016/09/09 Javascript
Vue学习笔记进阶篇之过渡状态详解
2017/07/14 Javascript
Vue 页面跳转不用router-link的实现代码
2018/04/12 Javascript
JavaScript实现京东购物放大镜和选项卡效果的方法分析
2018/07/05 Javascript
Vuejs开发环境搭建及热更新【推荐】
2018/09/07 Javascript
微信小程序实现提交input信息到后台的方法示例
2019/01/19 Javascript
angular中的post请求处理示例详解
2020/06/30 Javascript
Vertx基于EventBus发送接受自定义对象
2020/11/16 Javascript
vue 导航守卫和axios拦截器有哪些区别
2020/12/19 Vue.js
jquery实现图片放大镜效果
2020/12/23 jQuery
[46:38]完美世界DOTA2联赛PWL S2 Magma vs PXG 第三场 11.28
2020/12/02 DOTA
python格式化字符串实例总结
2014/09/28 Python
Python操作CouchDB数据库简单示例
2015/03/10 Python
使用Python保存网页上的图片或者保存页面为截图
2016/03/05 Python
在Python中通过getattr获取对象引用的方法
2019/01/21 Python
对python周期性定时器的示例详解
2019/02/19 Python
python获取txt文件词向量过程详解
2019/07/05 Python
Python获取时间戳代码实例
2019/09/24 Python
Python面向对象之多态原理与用法案例分析
2019/12/30 Python
Django 如何使用日期时间选择器规范用户的时间输入示例代码详解
2020/05/22 Python
基于python实现破解滑动验证码过程解析
2020/05/28 Python
百思买加拿大:Best Buy Canada
2018/03/20 全球购物
Wojas罗马尼亚网站:波兰皮鞋品牌
2018/11/01 全球购物
北美最大的零售退货翻新商:VIP Outlet
2019/11/21 全球购物
弘扬职业精神演讲稿
2014/03/20 职场文书
成绩单公证书
2014/04/10 职场文书
求职者怎样写自荐信
2014/04/13 职场文书
2016年中学端午节主题活动总结
2016/04/01 职场文书
css3 实现文字闪烁效果的三种方式示例代码
2021/04/25 HTML / CSS
解决Pytorch半精度浮点型网络训练的问题
2021/05/24 Python
Redis如何实现分布式锁
2021/08/23 Redis