【LeetCode】287. 寻找重复数

题目描述

给定一个包含 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) **
    尤其是对复杂对的要求,这就提高了算法设计的难度。

猜你喜欢

转载自www.cnblogs.com/melodyjerry/p/12966784.html