错误的集合–java–排序
思路:
这道题很简单,就是找出一个序列中少了的一个元素和重复了的一个元素。首先我们先讲解求重复元素的方法,有两种方式。一是将序列从小到大排序,比较当前元素与前一个元素的值来寻找重复元素。二是利用哈希表来寻找重复元素。接着我们讲解寻找缺少元素的方法。求解缺少元素可以利用正常序列的和减去该序列除了重复元素的和。由于重复元素我们已经求过了,所以只需利用n*n+1求出正常序列的和就可。
代码:
class Solution {
public int[] findErrorNums(int[] nums) {
int[] res = new int[2];
Arrays.sort(nums);
int sum = 0;
for( int i = 0; i < nums.length; ++i ){
sum += nums[i];
if( i > 0 && nums[i] == nums[i - 1] ){
res[0] = nums[i];
}
}
res[1] = (nums.length * (nums.length + 1)) / 2 - (sum - res[0]);
return res;
}
}