矩阵搜索问题,给定一个矩阵,矩阵中的而每一行都是递增的,第一列也是递增的,其余信息未知,给定一个元素查找矩阵中是否存在该元素,乍眼一看跟矩阵中行列都是递增的题目一样,其实不然,这里只有第一列是递增的其余都是不知道的,所以就不能按照行列都是递增的方法来做了

这里简单说一下自己的思路,如下这个矩阵:

1  3  15  17  19
2  4  16  17  22
3  4  21  44  51
6  7  18  29  36

方法是:题目中说的是每行都是递增的,那么可以知道每行最后一个值是最大的,那么我先抽取出来每行最大值即最后一个值,之后遍历一次与给定的数字对比,找出比给定数字大的或者相等的行索引,这些是需要遍历判断的,其余的就不需要考虑了,暂时没理解第一列也是递增的是什么意思有什么用处,下面是具体实现:

#!usr/bin/env python
#encoding:utf-8'''
__Author__:沂水寒城
功能:矩阵搜索问题,给定一个矩阵,矩阵中的而每一行都是递增的,第一列也是递增的其余信息未知,给定一个元素查找矩阵中是否存在该元素
'''def matrix_search(matrix, num):'''矩阵搜索'''last_col_list=[one_list[-1] for one_list in matrix]index_list=[]for i in range(len(last_col_list)):if last_col_list[i]>=num:index_list.append(i)flag=Falseres_list=[]while index_list:one_row=index_list.pop()one_list=matrix[one_row]if num in one_list:tmp_str='Row:{0},Col:{1}'.format(one_row,one_list.index(num))res_list.append(tmp_str)flag=Trueif flag:print '{0} Exists in {1}'.format(num, res_list)else:print '{0} No Exists!'.format(num)if __name__ == '__main__':matrix=[[1,3,15,17,19],[2,4,16,17,22],[3,4,21,44,51],[6,7,18,29,36]]for i in range(4):one_list=map(str, matrix[i])print '  '.join(one_list)num_list=[15,12,21,29,19]for one_num in num_list:matrix_search(matrix, one_num)

结果如下:

1  3  15  17  19
2  4  16  17  22
3  4  21  44  51
6  7  18  29  36
15 Exists in ['Row:0,Col:2']
12 No Exists!
21 Exists in ['Row:2,Col:2']
29 Exists in ['Row:3,Col:3']
19 Exists in ['Row:0,Col:4']
[Finished in 0.3s]

python求解矩阵搜索问题,矩阵中每一行和第一列都是递增的 给定一个元素查找矩阵中是否存在该元素相关推荐

  1. java 给定一个N阶矩阵A,输出A的M次幂(M是非负整数)

    java 给定一个N阶矩阵A,输出A的M次幂(M是非负整数) 给定一个N阶矩阵A,输出A的M次幂(M是非负整数) 例如: A = 1 2 3 4 A的2次幂 7 10 15 22 输入格式 第一行是一 ...

  2. 给定一个n*m矩阵,求从左上角到右下角走的项目3个问题?

    这个问题中走矩阵的格子还是定点是不一样的. 这里给出两个解法. 题目1:给定一个n*m矩阵,求从左上角格子到右下角格子总共存在多少条路径,每次只能向右走或者向下走. # 题目1:给定一个n*m矩阵,求 ...

  3. 有一副由NxN矩阵表示的图像,这里每个像素用一个int表示,请编写一个算法,在不占用额外内存空间的情况下(即不使用缓存矩阵),将图像顺时针旋转90度。 给定一个NxN的矩阵,和矩阵的阶数N,请返回旋转

    有一副由NxN矩阵表示的图像,这里每个像素用一个int表示,请编写一个算法,在不占用额外内存空间的情况下(即不使用缓存矩阵),将图像顺时针旋转90度. 给定一个NxN的矩阵,和矩阵的阶数N,请返回旋转 ...

  4. python量化:如何利用时间序列索引找到股票日线行情中的每个月的第一个交易日?每年的最后一个交易日?

    python量化:如何利用时间序列索引找到股票日线行情中的每个月的第一个交易日?每年的最后一个交易日? 大家都知道,交易所遇到周末.节假日的时候,是要休市的.当碰到休市的情况,股票日线数据就是缺失的, ...

  5. (蓝桥杯)问题描述   给定一个N阶矩阵A,输出A的M次幂(M是非负整数)   例如:   A =   1 2   3 4   A的2次幂   7 10   15 22

    问题描述 给定一个N阶矩阵A,输出A的M次幂(M是非负整数) 例如: A = 1 2 3 4 A的2次幂 7 10 15 22 输入格式 第一行是一个正整数N.M(1<=N<=30, 0& ...

  6. python与excel结合能做什么-openpyxl怎样按行和按列读取excel

    相信经过openpyxl基础知识的学习后,一些简单操作已经难不倒大家了.按行和按列读取excel又该怎么操作呢,今天小编就结合案例为大家讲解. openpyxl是python操作excel文件的一个库 ...

  7. php 查找数组相同元素,查找数组中重复的元素

    本文收集整理关于查找数组中重复的元素的相关议题,使用内容导航快速到达. 内容导航: Q1:在c语言中输入数组两个数组,查找重复元素并输出怎么写啊 可以一次读入N个数据.可以考虑以回车结束读入的一组. ...

  8. python中的且的符号and用两个和用一个的区别_Python 中的 or and 运算,看这一篇就够...

    问题出现: Python 中的 or,and 运算,可以写出比较复杂的演算表达式: 看了一些大神的演算规则解释,觉得不是很好理解,有些人甚至理解错了规则. 这里聊一下自己的理解. 其他人是怎么做的: ...

  9. python不读第一行和第一列-python 第一个

    广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. 为了方便程序员快速编写脚本程序(脚本就是要编程速度快快快!),pytho ...

  10. mysql将不同行数结果合并成多列_将多行合并到mysql中的一行和多列

    我正在MYSQL工作,需要将用户数据提取到一个视图中.我将使用电子邮件客户端中的数据,因此我无法在应用程序层中执行此操作. 问题是用户的每个数据字段都包含在单独的行中(这是Wordpress如何设置数 ...

最新文章

  1. Python控制结构总结
  2. 换脸火了,我用 Python 快速入门生成模型
  3. linux每日命令,日常整理linux常用命令大全(收藏)
  4. C# 内存的理解 通俗说
  5. 为什么编程语言以及数据库要从1970年1月1日开始计算时
  6. 爆破linux密码 $6$3uwqC9JI$d9iPRmTDAoXs/IbsplxS3iyeErHqw7fUycacXNHyZk1UCSwFEydl515/zXN7OEwHnyUaqYcNG...
  7. 13. GD32F103C8T6入门教程-定时器-3路pwm输出-刹车死区保护
  8. 中兴首款5G旗舰手机来了:2月25日见!
  9. Android 创建自己的Camera App
  10. 检查用户是否有访问权限
  11. python装饰器两层和三层_2020 python学习第十六天————三层装饰器与迭代器
  12. Hadoop大数据开发基础课后答案
  13. 求网页中嵌入mp3 格式音乐的html代码,子夜星·关于网页中加入音乐代码的讲解...
  14. 音箱后面接口 COM 8欧 70V 100V
  15. 客房管理系统java代码_java客房管理系统代码
  16. SQL注入风险与防范措施
  17. FPGA工程师面试试题集锦41~50
  18. AlexNet网络实现
  19. 物理机服务器cpu性能排行榜,g务器cpu性能排行_CPU天梯图2019年7月份新版——CPU性能排行天梯图...
  20. 大数据第一天 Hadoop01-入门集群环境搭建

热门文章

  1. ARM——操作系统—最小操作系统-开发板测试
  2. linux文件管理命令详解
  3. 一步步编写avalon组件03:切换卡组件
  4. 3月7日 Maximum Subarray
  5. 安卓系统怎么样不Root激活XPOSED框架的方法
  6. c语言数据结构学习心得——栈
  7. JavaScript 事件流
  8. CentOS随笔 - 4.CentOS7安装MySql 5.5.60(下载 tar 方式安装)
  9. day6 break continue for
  10. junit搭配hamcrest使用