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 }
     
  • 相关阅读:
    vue+element 通过checkbox控制el-table-column的显示或隐藏
    Vue 路由跳转相同路径页面不刷新
    Cookie的domain以及path详解
    Vue移动端项目如何使用手机预览调试
    vue SSR服务端渲染
    vue服务端渲染(ssr)与普通vue的区别,ssr的基本使用
    Vue SSR 插件Genesis
    br压缩算法
    Ant Design 自定义表单控件
    gorm出现incorrect datetime value '0000-0-0 00:00:00' for column问题
  • 原文地址:https://www.cnblogs.com/strengthen/p/9714912.html
Copyright © 2011-2022 走看看