美文网首页算法每日一刷
136. 只出现一次的数字(Swift)

136. 只出现一次的数字(Swift)

作者: entre_los_dos | 来源:发表于2019-10-29 15:10 被阅读0次

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/single-number
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    题目

    给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。

    说明:

    你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?

    示例 1:

    输入: [2,2,1]
    输出: 1
    

    示例 2:

    输入: [4,1,2,1,2]
    输出: 4
    

    方法一:两个for循环,判断是否有相等的

    func singleNumber(_ nums: [Int]) -> Int {
            for i in 0..<nums.count {
                
                for j in 0..<nums.count {
                    
                    if j != i {
                        if nums[i] == nums[j] {
                            break
                        }
                    }
                    if j == nums.count - 1 {
                        return nums[i]
                    }
                }
            }
            return 0
       }
    

    方法二:数学,2*sum(set(num)) - sum(num)

    func singleNumber(_ nums: [Int]) -> Int {
            return 2 * sum(Array(Set(nums))) - sum(nums)
        }
        func sum(_ nums: [Int]) -> Int {
            
            var sum = 0
            for num in nums {
                sum += num
            }
            return sum
        }
    

    方法三:一次循环,创建字典记录

    func singleNumber(_ nums: [Int]) -> Int {
            
            var numDic = [Int:Int]()
            
            for num in nums {
                
                if numDic[num] == nil {
                    numDic[num] = 1
                }else {
                    numDic[num] = nil
                }
            }
            
            return numDic.keys.first!
        }
    

    相关文章

      网友评论

        本文标题:136. 只出现一次的数字(Swift)

        本文链接:https://www.haomeiwen.com/subject/ziiwvctx.html