标题:961在长度2N的数组中找出重复N次的元素-简单
题目
给你一个整数数组 nums ,该数组具有以下属性:
nums.length == 2 * n.
nums 包含 n + 1 个 不同的 元素
nums 中恰有一个元素重复 n 次
找出并返回重复了 n 次的那个元素。
示例1
输入:nums = [1,2,3,3]
输出:3
示例2
输入:nums = [2,1,2,5,3,2]
输出:2
示例3
输入:nums = [5,1,5,2,5,3,5,4]
输出:5
提示
- 2 <= n <= 5000
- nums.length == 2 * n
- 0 <= nums[i] <= 104
- nums 由 n + 1 个 不同的 元素组成,且其中一个元素恰好重复 n 次
代码Go
func main() {
nums := []int{5, 1, 5, 2, 5, 3, 5, 4}
ans := repeatedNTimes1(nums)
fmt.Printf("ans: %v\n", ans)
}
// 哈希表
func repeatedNTimes(nums []int) int {
var n int = len(nums) / 2
arr := make(map[int]int, n+1)
for _, val := range nums {
if arr[val] == 1 {
return val
}
arr[val] = 1
}
return -1
}
// 随机选择
func repeatedNTimes1(nums []int) int {
var n int = len(nums)
// 随机生成两个索引
for {
index1 := rand.Intn(n)
index2 := rand.Intn(n)
if nums[index1] == nums[index2] && index1 != index2 {
return nums[index1]
}
}
}