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 相关文章推荐
json跨域调用python的方法详解
Jan 11 Python
Python图片裁剪实例代码(如头像裁剪)
Jun 21 Python
Python+tkinter使用80行代码实现一个计算器实例
Jan 16 Python
python中的for循环
Sep 28 Python
Python中的集合介绍
Jan 28 Python
Python提取支付宝和微信支付二维码的示例代码
Feb 15 Python
selenium 安装与chromedriver安装的方法步骤
Jun 12 Python
DataFrame.to_excel多次写入不同Sheet的实例
Dec 02 Python
Python+Appium实现自动化清理微信僵尸好友的方法
Feb 04 Python
Python使用pyenv实现多环境管理
Feb 05 Python
Python运算符+与+=的方法实例
Feb 18 Python
教你用Python爬取英雄联盟皮肤原画
Jun 13 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源码加密 仿微盾PHP加密专家(PHPCodeLock)
2010/05/06 PHP
php数组保存文本与文本反编成数组实例
2014/11/13 PHP
在Mac OS下搭建LNMP开发环境的步骤详解
2017/03/10 PHP
thinkphp5 框架结合plupload实现图片批量上传功能示例
2020/04/04 PHP
TopList标签和JavaScript结合两例
2007/08/12 Javascript
js取得url地址参数实例
2013/02/22 Javascript
js获取时间(本周、本季度、本月..)
2013/11/22 Javascript
IE8中使用javascript动态加载CSS的解决方法
2014/06/17 Javascript
JavaScript实现强制重定向至HTTPS页面
2015/06/10 Javascript
JS+CSS实现经典的左侧竖向滑动菜单效果
2015/09/23 Javascript
Bootstrap复选框和单选按钮美化插件(推荐)
2016/11/23 Javascript
基于BootStrap栅格栏系统完成网站底部版权信息区
2016/12/23 Javascript
Angularjs中使用指令绑定点击事件的方法
2017/03/30 Javascript
node跨域请求方法小结
2017/08/25 Javascript
jQuery选择器之子元素过滤选择器
2017/09/28 jQuery
Bootstrap 模态框自定义点击和关闭事件详解
2018/08/10 Javascript
解决angular2 获取到的数据无法实时更新的问题
2018/08/31 Javascript
JavaScript使用闭包模仿块级作用域操作示例
2019/01/21 Javascript
js的新生代垃圾回收知识点总结
2019/08/22 Javascript
vue-router之解决addRoutes使用遇到的坑
2020/07/19 Javascript
python根据unicode判断语言类型实例代码
2018/01/17 Python
pycharm运行出现ImportError:No module named的解决方法
2018/10/13 Python
Python Pandas分组聚合的实现方法
2019/07/02 Python
Python多版本开发环境管理工具介绍
2019/07/03 Python
python Kmeans算法原理深入解析
2019/08/23 Python
python实现双色球随机选号
2020/01/01 Python
keras中的backend.clip用法
2020/05/22 Python
最新党员思想汇报
2014/01/01 职场文书
2014年党员公开承诺践诺书
2014/03/25 职场文书
竞选宣传委员演讲稿
2014/05/24 职场文书
拾金不昧表扬信
2015/01/16 职场文书
新闻简讯格式及范文
2015/07/22 职场文书
公司管理建议书
2015/09/14 职场文书
使用Redis实现秒杀功能的简单方法
2021/05/08 Redis
聊聊golang中多个defer的执行顺序
2021/05/08 Golang
Java中的Kafka为什么性能这么快及4大核心详析
2022/09/23 Java/Android