题目描述
给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。
示例 1:
输入: [1,3,4,2,2]
输出: 2
示例 2:
输入: [3,1,3,4,2]
输出: 3
说明:
不能更改原数组(假设数组是只读的)。
只能使用额外的 O(1) 的空间。
时间复杂度小于 O(n^2) 。
数组中只有一个重复的数字,但它可能不止重复出现一次。
题解
本题的关键是“重复”!!!
而且,题目限定了元素的取值范围"其数字都在 1 到 n 之间(包括 1 和 n)"。
另外,“说明”里的也特别重要~
说明:
> 不能更改原数组(假设数组是只读的)。
> 只能使用额外的 O(1) 的空间。
> 时间复杂度小于 O(n^2) 。
> 数组中只有一个重复的数字,但它可能不止重复出现一次。
代码
提交
题后
今天这“每日一题”和《【LeetCode】面试题03. 数组中重复的数字》有些类似。
不同的是,今天这题限定了一些特别的条件,比如:
- 不能更改原数组(假设数组是只读的)
- 只能使用额外的 O(1) 的空间
- **时间复杂度小于 O(n^2) **
尤其是对复杂对的要求,这就提高了算法设计的难度。