zoukankan      html  css  js  c++  java
  • [Swift]LeetCode136. 只出现一次的数字 | Single Number

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
    ➤微信公众号:山青咏芝(shanqingyongzhi)
    ➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/
    ➤GitHub地址:https://github.com/strengthen/LeetCode
    ➤原文地址:https://www.cnblogs.com/strengthen/p/9714912.html 
    ➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
    ➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

    Given a non-empty array of integers, every element appears twice except for one. Find that single one.

    Note:

    Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?

    Example 1:

    Input: [2,2,1]
    Output: 1
    

    Example 2:

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

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

    说明:

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

    示例 1:

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

    示例 2:

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

    16ms
     1 class Solution {
     2     func singleNumber(_ nums: [Int]) -> Int {
     3         var result = nums.first!
     4         
     5         for index in 1..<nums.count {
     6             result = result ^ nums[index]
     7         }
     8         
     9         return result;
    10     }
    11 }

    48ms
     1 class Solution {
     2     func singleNumber(_ nums: [Int]) -> Int {
     3         // 2 * (a + b) - (a + b + a) = b
     4         let set = Set(nums)
     5         let setSum = set.reduce(0, +)
     6         let arrSum = nums.reduce(0, +)
     7     
     8         return 2 * setSum - arrSum
     9     }
    10 }

    84ms

     1 class Solution {
     2     func singleNumber(_ nums: [Int]) -> Int {
     3         var set = Set<Int>()
     4     
     5         for item in nums
     6         {
     7             if set.contains(item) {
     8                 set.remove(item)
     9             }
    10             else
    11             {
    12                 set.insert(item)
    13             }
    14         }
    15 
    16         return set.popFirst()!
    17     }
    18 }

    96ms

    1 class Solution {
    2     func singleNumber(_ nums: [Int]) -> Int {
    3         return nums.reduce(0, { $0^$1 })
    4     }
    5 }

    108ms

     1 class Solution {
     2     func singleNumber(_ nums: [Int]) -> Int {
     3         var dict: [Int: Int] = [:]
     4         
     5         for num in nums {
     6             dict[num] = (dict[num] ?? 0) + 1
     7         }
     8         
     9         for num in dict.keys {
    10             if dict[num] == 1 {
    11                 return num
    12             }
    13         }
    14         
    15         return 0
    16     }
    17 }

    112ms

    1 class Solution {
    2     func singleNumber(_ nums: [Int]) -> Int {
    3 
    4    return nums.reduce(0, ^)
    5   }
    6 }
     
  • 相关阅读:
    GET和POST区别
    es索引介绍
    前端 用法记录
    axios 使用
    react技巧 学习
    vuex 学习笔记
    fetch 学习笔记
    react-router 4.0 学习笔记
    react 学习笔记2
    react 学习笔记
  • 原文地址:https://www.cnblogs.com/strengthen/p/9714912.html
Copyright © 2011-2022 走看看