思路一
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param array int整型一维数组
* @return int整型一维数组
*/
public int[] FindNumsAppearOnce (int[] array) {
// write code here
int[] res = new int[2];
int count = 0;
Arrays.sort(array);
for(int i = 0; i < array.length; ++i){
// System.out.println("i = " + i);
if(i == 0){
if(array[i] != array[i + 1])
res[count++] = array[i];
} else if(i == (array.length-1)){
if(array[i] != array[i-1])
res[count++] = array[i];
} else if(array[i] != array[i-1] && array[i] != array[i+1]){
res[count++] = array[i];
if(count == 2){
break;
}
}
}
return res;
}
}
思路二
- 使用Java提供的TreeSet集合,可以实现排序;
- 将只出现一次的数据保存到TreeSet中,出现多次的数据从TreeSet中删除。
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param array int整型一维数组
* @return int整型一维数组
*/
public int[] FindNumsAppearOnce (int[] array) {
// write code here
int[] res = new int[2];
TreeSet<Integer> set = new TreeSet<>();
for(int i = 0; i < array.length; ++i){
if(set.contains(array[i])){
set.remove(array[i]);
} else {
set.add(array[i]);
}
}
int i = 0;
for(Integer num : set){
res[i++] = num;
}
return res;
}
}