题解 | #数组中重复的数字#

数组中重复的数字

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
全部评论

相关推荐

你背过凌晨4点的八股文么:简历挂了的话会是流程终止,像我一样
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务