LeetCode:有序数组中的单一元素


题目

给定一个只包含整数的有序数组,每个元素都会出现两次,唯有一个数只会出现一次,找出这个数。

示例 1:

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

示例 2:

1
2
输入: [3,3,7,7,10,11,11]
输出: 10

注意: 您的方案应该在 O(log n) 时间复杂度和 O(1) 空间复杂度中运行。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/single-element-in-a-sorted-array

代码

Go

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

import "fmt"

func singleNonDuplicate(nums []int) int {
var ns map[int]int
ns = make(map[int]int)
for i := 0; i < len(nums); i++ {
ns[nums[i]] += 1
}

for k, v := range ns {
if v == 1 {
return k
}
}

panic("error")
}

func main() {
fmt.Println(singleNonDuplicate([]int{1, 1, 2, 3, 3, 4, 4, 8, 8}))
}

评论