在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ Given a non-empty array of integers, every element appears three times except for one, which appears exactly once. 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,3,2] Output: 3 Example 2: Input: [0,1,0,1,0,1,99] Output: 99 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现了三次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? 示例 1: 输入: [2,2,3,2] 输出: 3 示例 2: 输入: [0,1,0,1,0,1,99] 输出: 99 12ms 1 class Solution { 2 func singleNumber(_ nums: [Int]) -> Int { 3 let count = nums.count 4 guard count > 0 else { return 0 } 5 let range = 1..<count 6 var oneTime = nums[0] 7 var twoTimes = 0 8 var notThreeTimes = 0 9 for i in range { 10 let next = nums[i] 11 twoTimes |= oneTime & next 12 oneTime ^= next 13 notThreeTimes = ~(oneTime & twoTimes) 14 oneTime &= notThreeTimes 15 twoTimes &= notThreeTimes 16 } 17 return oneTime 18 } 19 } 16ms 1 class Solution { 2 func singleNumber(_ nums: [Int]) -> Int { 3 var a = 0, b = 0; 4 for num in nums { 5 b = (b ^ num) & ~a; 6 a = (a ^ num) & ~b; 7 } 8 return b; 9 } 10 } 24ms 1 class Solution { 2 func singleNumber(_ nums: [Int]) -> Int { 3 guard nums.count > 0 else { 4 return 0 5 } 6 7 var temp = [Int: Int]() 8 9 for num in nums { 10 temp[num] = temp[num, default: 0] + 1 11 } 12 13 for key in temp.keys { 14 if temp[key]! == 1 { 15 return key 16 } 17 } 18 19 return 0 20 } 21 } 28ms 1 class Solution { 2 func singleNumber(_ nums: [Int]) -> Int { 3 var resSet = Set<Int>(nums) 4 var showed = Set<Int>() 5 for num in nums { 6 if showed.contains(num) { 7 resSet.remove(num) 8 } 9 showed.insert(num) 10 } 11 return resSet.first! 12 } 13 } 76ms 1 class Solution { 2 func singleNumber(_ nums: [Int]) -> Int { 3 var numDict = [Int: Int]() 4 for num in nums { 5 if let value = numDict[num] { 6 numDict[num] = value + 1 7 } else { 8 numDict[num] = 1 9 } 10 } 11 12 let singleVal = numDict.filter { $0.value == 1 }.first! 13 return singleVal.key 14 } 15 } 80ms 1 class Solution { 2 func singleNumber(_ nums: [Int]) -> Int { 3 return ((Set(nums).reduce(0,+) * 3) - nums.reduce(0,+))/2 4 } 5 } 80ms 1 class Solution { 2 func singleNumber(_ nums: [Int]) -> Int { 3 guard nums.count > 0 else { 4 return 0 5 } 6 var result = 0 7 for i in 0..<MemoryLayout<Int>.size * 8 { 8 var count = 0 9 for j in 0..<nums.count { 10 count += (nums[j] >> i) & 1 11 } 12 13 result += (count % 3) << i 14 } 15 16 return result 17 } 18 }
|
请发表评论