LeetCode (一)找出只出现一次的元素

题目链接
代码链接

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

思路 一:

  1. 先排序
  2. 排序之后,通过比较的方式找到这个数字

这里我使用了插入排序的方式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

func singleNumber(_ nums: [Int]) -> Int {

// 先对数组进行排序
var numbers = nums
for i in 1..<numbers.count {
var k = i - 1;
let K = numbers[i]
while k > 0 && numbers[k] > K {
numbers[k + 1] = numbers[k]
k = k - 1
}
numbers[ k + 1] = K
}

var k = 0
for _ in numbers {
if numbers[k] - numbers[k + 1] == 0 {
k = k + 2
}else {
return numbers[k]
}
}
return 0
}

思路 二:

通过异或的方式实现

1
2
3
4
5
6
7
func singleNumber2(_ nums: [Int]) -> Int {
var re = 0
for number in nums {
re = re^number
}
return re
}

第二种方式相对来说简单很多,效率也不错!

执行结果:

-------------本文结束谢谢欣赏-------------
Alice wechat