Leetcode 287: Find the Duplicate Number
分类:Binary Search
难度:M
描述:给了一个长度为n + 1
的数组,数组中的数大小在1和n之间。证明这个数组中一定有重复的数字,并且把它找出来。
Input: [1,3,4,2,2]
Output: 2
Input: [3,1,3,4,2]
Output: 3
链接: Find the Duplicate Number.
思路:
在这里首先说一个原理: 抽屉原理.简单来说,就是11个苹果想放进10个或更少的抽屉,那么一定有一个抽屉是要放多于一个苹果的。
放在这个题的环境里,有n + 1
个位置,但是只给了n
个不同的数字。要放进这些位置,必然有一个数要重复用到。这个题的目的就是把它给找到。
本题解法多种多样。LC官方给了类似于使用sort()函数之类的看似简单的方法。但是那样做的