zoukankan      html  css  js  c++  java
  • [剑指offer]3.数组中的重复数字

    3.数组中的重复数字

    题目

    找出数组中重复的数字。

    在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。

    方法一

    排序

    现将序列排序,并找出与之后面相邻元素相等的元素。

    时间复杂度O(nlogn)

    代码

    class Solution:
        def findRepeatNumber(self, nums: List[int]) -> int:
            nums.sort()
            for i in range(len(nums)):
                if nums[i] == nums[i+1]:
                    return nums[i]
    

    方法二

    哈希表

    创建空字典dic,将没有遍历过的值存在字典dic中,若遍历到字典中存在的值,则直接返回该元素。

    时间复杂度O(n)

    代码

    class Solution:
        def findRepeatNumber(self, nums) :
            dic = {}
            for num in nums:
                if num not in dic:
                    dic[num] = 1
                else:
                    return num
                
    if __name__=='__main__':
        a = input()
        nums = [int(num) for num in a.strip().split(' ')]
        num = Solution().findRepeatNumber(nums)
        print(num)
    
  • 相关阅读:
    网络安全之常见攻击
    引入element-ui
    引入sass
    浏览器解析流程
    JDK8 HashMap--removeNode()移除节点方法
    JDK8 HashMap--treeify()树形化方法
    JDK1.8 HashMap--treeifyBin()方法
    二叉查找树ADT
    队列ADT

  • 原文地址:https://www.cnblogs.com/wyz-2020/p/12507875.html
Copyright © 2011-2022 走看看