LeetCode 287. 寻找重复数
题目描述
给定一个包含 n + 1 个整数的数组 nums ,其数字都在 [1, n] 范围内(包括 1 和 n),可知至少存在一个重复的整数。
假设 nums 只有 一个重复的整数 ,返回 这个重复的数 。
你设计的解决方案必须 不修改 数组 nums 且只用常量级 O(1) 的额外空间。
示例 1:
输入:nums = [1,3,4,2,2]
输出:2
寻找重复数
提示:
1 <= n <= 105
nums.length == n + 1
1 <= nums[i] <= n
nums 中 只有一个整数 出现 两次或多次 ,其余整数均只出现 一次
一、解题关键词
二、解题报告
1.思路分析
2.时间复杂度
3.代码示例
class Solution {
public int findDuplicate(int[] nums) {
int len = nums.length;
Set<Integer> set = new HashSet<Integer>();
for(int i = 0;i <=len; i++){
if(!set.add(nums[i])){
return nums[i];
}
}
return -1;
}
}
2.知识点
我愿称之为沙雕题。哈哈哈哈哈哈
该博客详细介绍了LeetCode287题的解题过程,主要讨论如何在不修改数组的情况下,仅使用常量级额外空间找出数组中重复的整数。解题思路涉及哈希集合,通过遍历数组并尝试将元素添加到集合中,当遇到已存在的元素时返回该元素,实现常数空间复杂度的解法。博客作者幽默地称此题为“沙雕题”,并提供了完整的Java代码示例。
1646

被折叠的 条评论
为什么被折叠?



