leetcode:single-number-ii(Java实现)

题目描述
现在有一个整数类型的数组,数组中只有一个元素只出现一次,其余元素都出现三次。你需要找出只出现一次的元素

注意:

你需要给出一个线性时间复杂度的算法,你能在不使用额外内存空间的情况下解决这个问题么?

思路分析: 
偏暴力,永远的flag。开一个辅助数组,将原数组中出现次数>1的数放进去,那么最后没放进去的是只出现一次的元素,即答案

可运行代码:
public class Solution {
/**
*
* @param A int整型一维数组
* @return int整型
*/
public static int singleNumber (int[] A) {
// write code here
int i,j,k,l,count,flag=0;int []B=new int[100];
for(i=0,k=0,count=1;i<A.length;i++){
count=1;
for(j=i+1;j<A.length;j++){
if(A[j]==A[i])
count++;
}

//遍历辅助数组看A[i]是否在B[l]中
for(l=0;l<B.length;l++){
if(B[l]==A[i]){
flag=1;
break;
}
}
if(count>1&&flag==0)
B[k++]=A[i];
else
flag=0;
}
for(i=0,flag=0;i<A.length;i++){
for(j=0;j<B.length;j++){
if(A[i]==B[j]){
flag=1;
break;
}
}
if(flag==0)
break;
else
flag=0;
}
return A[i];
}

public static void main(String[] args) {
int number = singleNumber(new int[]{1, 2, 2, 2});
System.out.println(number);
}

猜你喜欢

转载自www.cnblogs.com/zqfs433/p/13383155.html