题解 | #数组中重复的数字#
数组中重复的数字
http://www.nowcoder.com/practice/6fe361ede7e54db1b84adc81d09d8524
数组中重复的数字
请找出数组中任意一个重复的数字
存在不合法的输入的话输出-1
合法输入判断
输入非空数组的判断
在判断布尔类型对象的时候,如果值为0或者空序列或者None的时候判断为False,其他除了自定义对象的实例外,都是True对象
重复元素判断/剔除重复元素题/数列的不重复排序
重要概念
Python有内置函数set() 函数可以创建一个无序不重复元素集,可进行关系测试,删除重复数据,返回新的集合对象
add() 方法用于给集合添加元素,如果添加的元素在集合中已存在,则不执行任何操作
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param numbers int整型一维数组
# @return int整型
#
class Solution:
def duplicate(self , numbers: List[int]) -> int:
# write code here
if numbers:
s = set()
for number in numbers:
if number in s:
return number
else:
s.add(number)
else:
return -1
未知概念
排序遍历法,时间复杂度O(n)
class Solution:
def duplicate(self , numbers: List[int]) -> int:
# write code here
if numbers:
numbers_sorted=sorted(numbers)
for index in range(len(numbers_sorted)):
# if numbers_sorted[index] in numbers_sorted[(index+1):]:
#向当前元素后查询重复元素,运行时间700ms
if numbers_sorted[index] == numbers_sorted[index+1]:
#向当前元素前查询重复元素,运行时间50ms
return numbers_sorted[index]
else:
return -1