在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ 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 }
|
请发表评论