思路一:哈希表+排序
import java.util.*;
public class Solution {
public int[] FindNumsAppearOnce (int[] array) {
HashMap<Integer,Integer> map = new HashMap<>();
for(int i=0;i<array.length;i++)
{
if(map.containsKey(array[i]))
map.put(array[i],map.get(array[i])+1);
else
map.put(array[i],1);
}
int arrs[] = new int[2];
int k=0;
for(int i=0;i<array.length;i++)
{
if(map.get(array[i])==1)
arrs[k++]=array[i];
if(k==2)
break;
}
//Arrays.sort(arrs);方式一数组排序
//方式二逆序则交换
if(arrs[1]<arrs[0])
{
int temp=arrs[0];
arrs[0]=arrs[1];
arrs[1]=temp;
}
return arrs;
}
}
时间不考虑排序的情况下,因为这里只排序两个数 那么就是O(N)+O(N)=O(N),考虑排序那么就是排序O(nlogn)的复杂度,感觉两个数没有必要使用排序,逆序就交换
空间O(1)
思路二:位运算待续