从第1行开始。继续前进,直到第一个1。然后跳至第2行,但仍留在同一列中,重复右移的过程,直到您点击为止1。重复执行此操作。您上一步右移的行就是您的答案。

这是一个O(N + M)解(对于NxM矩阵,或者对于正方形NxN矩阵为O(N),如问题所示)。

使用您的示例:

0 1 1 1 0 0 0 1 0 0 0 0 1 1 1 1 该.是在这里代表走过的路径:

. . 1 1 0 . . . 0 0 0 . . Last right step, therefore this is our answer 1 1 1 1 . 该解决方案适用于非正方形矩阵,对于NxM矩阵保留最坏情况下的O(N + M)效率。

为什么这样做?保证数字将被排序意味着每行将是一系列0,然后是一系列1。因此,一行的大小等于您在击中1之前可以走的最远距离。因此,如果一行只要跟随0就能使您走得更远,那么它必须比我们之前处理的任何内容都要长。

Python代码:

li = [[0, 1, 1, 1], [0, 0, 0, 1], [0, 0, 0, 0], [1, 1, 1, 1]]

ans, j = 0, 0 for i, row in enumerate(li): while j < len(row) and row[j] == 0: j += 1 ans = i

print "Row", ans+1, "".join(map(str, li[ans])) 由于始终具有正方形NxN矩阵和不同的行,因此存在一个更简单的解决方案。它们在一起意味着值最低的行将为0 0 ... 0 1或0 0 ... 0 0。这是因为矩阵中代表N + 1个可能的数字中的N个,因此“缺失”数字要么为0(在这种情况下,表示的最小值为1),要么为其他数值(最小值为0)。

掌握了这些知识之后,我们从右边第二列开始检查是否为0。找到一个时,我们向右看,如果包含另一个0,我们得到答案(只能有一行以a结尾0)。否则,我们将继续在该列中搜索另一个0。如果找不到另一个0,则找到的第一个是我们要查找的行(只能有一个以结尾结尾的行01,因为没有一个结尾为00,这是最小的)。

Python代码:

li = [[0, 1, 1, 1], [0, 0, 0, 1], [0, 0, 0, 0], [1, 1, 1, 1]]

for i, row in enumerate(li): if row[-2] == 0: ans = i if row[-1] == 0: break

print "Row", ans+1, "".join(map(str, li[ans])) 该解决方案可以最轻松地回答O(N)的问题,但是将其推广到处理非平方NxM矩阵或非唯一数字将使其最坏情况的效率为O(N ^ 2)。我个人更喜欢第一个解决方案。

python中的ans是什么意思_python ans相关推荐

  1. python中str的index什么意思_python中index的用法是什么

    index() 一般用处是在序列中检索参数并返回第一次出现的索引,没找到就会报错,比如:>>> t=tuple('Allen') >>> t ('A', 'l', ...

  2. python中gil锁和线程锁_Python线程——GIL锁、线程锁(互斥锁)、递归锁(RLock)...

    GIL锁 ​ 计算机有4核,代表着同一时间,可以干4个任务.如果单核cpu的话,我启动10个线程,我看上去也是并发的,因为是执行了上下文的切换,让看上去是并发的.但是单核永远肯定时串行的,它肯定是串行 ...

  3. python中函数包括标准库函数吗_Python语言和标准库(第二章:函数)

    a-如何创建函数. b-给出一些指导原则,帮助思考如何创建和组织程序以使用函数. c-如何编写函数,使随后可以询问它们的工作方式和实现的功能. 2.1将程序放在单独的文件里 为了更加方便,从现在开始, ...

  4. python中int表示的数据类型是_python中的基本数据类型之 int bool str

    一.基本数据类型 1. int  ==>  整数.主要用来进行数学运算. 2.str  ==>  字符串.可以保存少量的数据,并进行相应的操作. 3.bool  =>  布尔值.判断 ...

  5. python中导入模块用什么命令_Python导入模块的技巧

    作为使用Python的开发者,我们一开始学习的内容之一就是如何导入Python的各种模块或库.但是我们注意到,那些经常使用Python的用户并不一定都知道Python的导入机制其实非常灵活.在本文中, ...

  6. python中math.ceil是什么意思_python中的数字取整(ceil,floor,round)概念和用法

    python中的数学运算函数(ceil,floor,round)的主要任务是截掉小数以后的位数.总体来说 就是取整用的.只是三者之间有微妙的区别: floor() :把数字变小 ceil() : 把数 ...

  7. python中def _init_是什么意思_Python中self和__init__的含义与使用

    原文地址https://blog.csdn.net/love666666shen/article/details/78189984 Python中的self 在Python中的类Class的代码中,常 ...

  8. python中的 2%s何意_python中的%s%是什么意思

    python中的%s%是什么意思 它是一个字符串格式化语法(它从C借用). 请参阅  "格式化字符串": Python支持将值格式化为字符串.虽然这可以包括非常复杂的表达式,但最基 ...

  9. python中如何创建类的对象_python面向对象中如何建立具体的对象?

    我们现在眼前所能看到的事物,都是具体的对象.很多小伙伴在面向对象中创建对象,其实都停留在对象名称的建立,计算机中并没有具体对象的描述属性.我们想要使用python中的类,建立的对象就需要是具体的.下面 ...

  10. python中的1怎么用的_python中的[:-1]和[::-1]的具体使用

    1.案例解释 a='python' b=a[::-1] print(b) #nohtyp c=a[::-2] print(c) #nhy #从后往前数的话,最后一个位置为-1 d=a[:-1] #从位 ...

最新文章

  1. 回调函数_实用程序类与函数式编程无关
  2. android 安装步骤
  3. 解决larave-dompdf中文字体显示问题
  4. mysql行转列和列转行_Mysql中行转列和列转行
  5. Uva 247 - Calling Circles(传递闭包 / 强连通分量)
  6. sqlalchemy_外键连接表
  7. Mybatis的简单增删查改(CRUD)
  8. Go基础:产生随机数
  9. 毕设查重,避免雷区【划重点!!!】
  10. 白帽子讲web安全笔记
  11. UFS Write Booster Feature Overview
  12. F - Shifting String(置换的阶+思维)
  13. ssm+Vue计算机毕业设计益学(程序+LW文档)
  14. JAVA获得股票数据大全
  15. 国医中药,人参神秘而又独特的地位
  16. python制作数据增长动图_请问一下这种数据动图是如何做出来的?
  17. ios应用内下载并安装另一个应用
  18. JVM虚拟机-----垃圾回收相关概念
  19. JavaScript(JS)有一组英文歌曲,按照歌曲名称的字母顺序从“A”到“Z”顺序排列,保存在一个数组中。
  20. Flutter 实现背景图片毛玻璃效果

热门文章

  1. SAP UI5 应用读取 CSRF token 的 HTTP head 请求逻辑解析
  2. SAP UI5 应用开发教程之三十二 - 如何创建一个自定义 SAP UI5 控件试读版
  3. 使用 SAP UI5 系统测试工具 UIVeri5 的一个具体例子
  4. SAP Spartacus 事件服务 Event Service 使用介绍
  5. Angular应用只执行指定单元测试的小技巧
  6. SAP WebClient UI开发工具中attribute文件夹展开的实现原理分析
  7. SAP CRM OData multiple origin Composition的测试
  8. SAP S/4HANA系统Fiori UI上Adapt UI按钮显示与否的控制逻辑
  9. CRM campaign relationship read
  10. 使用Prometheus监控Linux系统各项指标