python - 从列表中查找缺失的元素
问题描述
我编写此代码是为了从给定列表中查找丢失的正整数,但None
在某些情况下它仍然返回。
例如,给定数组A = [2, 4, 1, 5]
,函数应该返回 3,因为它是连续序列 (1 2 3 4 5) 中缺失的元素。
我究竟做错了什么?
def solution(A):
i = 1
while i<len(A):
if i not in A:
return i
i += 1
解决方案
您需要意识到这i < len(A)
会导致一些问题。
给定这个例子:
A = [1, 2, 3, 5]
看起来很清楚,想要的答案是4
,但你的功能是给予None
。这是因为len(A) == 4
,因此,您的循环条件是i < 4
,它有效地从 1 枚举i
到 3。
既然要找出缺失的数字,不妨在i
到达列表中的最大数字时停止循环,而不是列表的长度,所以:
while i < max(A):
是对的。
推荐阅读
- javascript - jQuery .get() :当她不应该时,变量等于另一个变量
- angular - 我无法将我的内容类型设置为正确的格式
- react-native - react native不能动态改变Image组件源uri
- android - 如果设备上安装了应用程序,我如何对 Recyclerview 项目进行排序
- javascript - .exec() 和 .split() 的正则表达式的工作方式不同
- php - 在 Laravel 中找不到类“ZipArchive”
- c++ - c++ 在字符串中找不到最大值。我总是得到 49、51、53、54 号
- powershell - 特定用户的远程桌面服务登录历史记录
- python - python3.x:系列中的序列没有任何输出
- android - 根据Android中的彩色进度条消亡Mapbox多边形