https://oj.leetcode.com/problems/single-number-ii/
这个题的大体意思是,在一个数组中大部分数都会出现三次,只有一个数只会出现一次,输出这个出现一次的数。
空间复杂度只能是N,时间复杂度只能是线性的。
首先可以先排序然后每三个一组查找只出现一次的数,时间复杂度是N*logN+N差不多是线性的了。
public class Solution { public int singleNumber(int [] A){ Arrays.sort(A); int n = A.length; for(int i=0;i<n-1;i+=3){ if(!(A[i]==A[i+1]&&A[i+1]==A[i+2])){ if(A[i]==A[i+1]){ return A[i+2]; } else{ return A[i]; } } } return A[n-1]; } }