寻找重复数
Contents
问题描述
- 包含n+1个整数的数组nums,其数字都在1到n之间,若只存在一个重复的整数,找出这个重复的整数。
- https://leetcode-cn.com/problems/find-the-duplicate-number/
解题
- 排序,然后遍历数组即可O(nlogn)
- 快慢指针可以达到O(n)的时间复杂度
- 题解中说到之所以将其转换为快慢指针,是因为可以转换为一个链表,但并不是将所有元素都转换为链表!
- 之所以可以用快慢指针,还因为数组是从0开始的,而且数组中不包括元素0.
- 之所以可以用快慢指针,是因为那些index和value一样而且还不是重复元素的元素永远不会被遍历到!(从0开始,数组中的其他元素不可能等于该元素)。
- 之所以可以用快慢指针,还因为重复的元素一定可以被遍历到,
- 之所以可以用快慢指针,还因为重复的元素是一定存在的!如果不存在重复元素,从0开始的链表依然是一个环,而且所有的元素都在环内。只有那些部分元素在环内的链表才能表示存在重复元素。
Author 段新朋
LastMod 2020-07-17