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

数组中重复的数字

https://www.nowcoder.com/practice/6fe361ede7e54db1b84adc81d09d8524

class Solution:
    def duplicate(self, nums):
        if not nums or len(nums) == 0:
            return -1

        n = len(nums)
        counts = [0] * n

        for num in nums:
            if num < 0 or num >= n:
                return -1

            counts[num] += 1
            if counts[num] > 1:
                return num

        return -1

# 测试示例
solution = Solution()
print(solution.duplicate([2, 3, 1, 0, 2, 5, 3]))  # 输出:2

这个问题的解题思路如下:

  1. 首先,检查输入数组是否为空或长度为0。如果是,则返回-1。
  2. 获取数组的长度n,并创建一个长度为n的counts数组,用于存储每个数字出现的次数。
  3. 遍历输入数组nums中的每个数字num:如果num不在0到n-1范围内,则输入数组不合法,返回-1。在counts数组中将num对应的计数加1。如果num在counts数组中的计数大于1,说明num是一个重复数字,返回num。
  4. 如果遍历完成后没有找到重复数字,返回-1。

这个解法的时间复杂度是O(n),因为它遍历了输入数组一次。空间复杂度也是O(n),因为我们创建了一个额外的counts数组来存储每个数字出现的次数。

#编程#
全部评论

相关推荐

10-02 19:29
已编辑
浙江科技大学 运营
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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