首页 > 编程语言 > 详细

找到数组中唯一不重复的元素

时间:2019-10-13 09:09:51      阅读:326      评论:0      收藏:0      [点我收藏+]

题目

Given a list of numbers, where every number shows up twice except for one number, find that one number.

Example:
Input: [4, 3, 2, 4, 1, 3, 2]
Output: 1

Challenge: Find a way to do this using O(1) memory.

分析

要实现 O(1) 空间复杂度,能学到的一个简单办法是就地将数组排个序。然后2个2个的迭代,判断相邻2个元素是否相等,不相等则找到了唯一元素。
时间复杂度上升到了至少 O(nlogn). (但如果用计数排序的话,也许可以做到 O(n), 但是这样一来空间复杂度又不满足了)。

代码

def singleNumber(nums):
    nums.sort()
    for i in range(0, len(nums) - 1, 2):
        if nums[i + 1] != nums[i]:
            return nums[i]

print singleNumber([4, 3, 2, 4, 1, 3, 2])
# 1

找到数组中唯一不重复的元素

原文:https://www.cnblogs.com/new-start/p/11664655.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!