题目描述:
给定一个整数数组 a,其中 1 ≤ a [ i ] ≤ n 1 ≤ a[i] ≤ n 1≤a[i]≤n(n为数组长度), 其中有些元素出现两次而其他元素出现一次。
找到所有出现两次的元素。
你可以不用到任何额外空间并在 O ( n ) O(n) O(n)时间复杂度内解决这个问题吗?
示例:
输入:
[4,3,2,7,8,2,3,1]
输出:
[2,3]
思路: 这道题的难点在于题目限制了不能使用额外的空间,并且要求了时间复杂度。假如没有这两条限制,可使用的方式很多,比如采用字典保存数值和出现次数,或者先排序再遍历数组等等。
既然有了额外的限制,就要从题目中找到额外的信息帮助解决问题。题目中有一个很有用的信息: