This commit is contained in:
2026-07-23 16:56:50 +08:00
parent 124ad9afdf
commit 92784ffb0f
36 changed files with 2015 additions and 608 deletions
+54
View File
@@ -0,0 +1,54 @@
package top100liked
import (
"testing"
)
// https://leetcode.cn/problems/find-the-duplicate-number/?envType=study-plan-v2&envId=top-100-liked
// 287. 寻找重复数
//
// 给定一个包含 `n + 1` 个整数的数组 `nums` ,其数字都在 `[1, n]` 范围内(包括 `1` 和 `n`),可知至少存在一个重复的整数。
// 假设 `nums` 只有 一个重复的整数 ,返回 这个重复的数 。
// 你设计的解决方案必须 不修改 数组 `nums` 且只用常量级 `O(1)` 的额外空间。
// 示例 1
// 输入:nums = [1,3,4,2,2]
// 输出:2
// 示例 2
// 输入:nums = [3,1,3,4,2]
// 输出:3
// 示例 3 :
// 输入:nums = [3,3,3,3,3]
// 输出:3
//
// 提示:
// - `1 <= n <= 10^5`
// - `nums.length == n + 1`
// - `1 <= nums[i] <= n`
// - `nums` 中 只有一个整数 出现 两次或多次 ,其余整数均只出现 一次
// 进阶:
// - 如何证明 `nums` 中至少存在一个重复的数字?
// - 你可以设计一个线性级时间复杂度 `O(n)` 的解决方案吗?
//
func findDuplicate(nums []int) int {
}
func TestFindDuplicate(t *testing.T) {
cases := []struct {
name string
nums []int
want int
}{
{"example1", []int{1, 3, 4, 2, 2}, 2},
{"example2", []int{3, 1, 3, 4, 2}, 3},
{"example3", []int{3, 3, 3, 3, 3}, 3},
}
for _, c := range cases {
t.Run(c.name, func(t *testing.T) {
got := findDuplicate(c.nums)
if got != c.want {
t.Errorf("got %v, want %v", got, c.want)
}
})
}
}