题目描述
方法一
思路:计数
具体代码
class Solution {
public int[] findErrorNums(int[] nums) {
int n = nums.length;
int[] cnts = new int[n+1];
for(int x:nums){
cnts[x]++;
}
int a[]=new int [2];
for(int i=1;i<n+1;i++){
if(cnts[i]==2){
a[0]=i;
}
if(cnts[i]==0){
a[1]=i;
}
}
return a; }
}
方法二
思路:排序
具体代码
class Solution {
public int[] findErrorNums(int[] nums) {
int[] errorNums = new int[2];
int n = nums.length;
Arrays.sort(nums);
int prev = 0;
for (int i = 0; i < n; i++) {
int curr = nums[i];
if (curr == prev) {
errorNums[0] = prev;
} else if (curr - prev > 1) {
errorNums[1] = prev + 1;
}
prev = curr;
}
if (nums[n - 1] != n) {
errorNums[1] = n;
}
return errorNums;
}
}