去某公司面试~
技术问的问题是给一个数组,挑出里面只出现一次的数字。
以下是我给出的方法,算不上正规的算法。也没考虑什么控件复杂度。
如果你是大牛,请在回复里写一下 你的算法。欢迎互动
public static void main(String[] args) {
int array[]={1,3,5,7,9,1,3,5,7};
int length=array.length;
StringBuilder sb= new StringBuilder();
for(int i=0;i<length;i++){
sb.append(array[i]);
}
for(int i=0;i<length;i++){
int firstPosition=sb.indexOf(array[i]+"");
int endPosition=sb.lastIndexOf(array[i]+"");
if(firstPosition==endPosition)
System.out.println("出现一次的是:"+array[i]);
}
}
针对1楼提出的bug
我做出如下修改,
<span style="font-size:18px;color:#000000;">public void find(){
int array[]={11,13,55,77,99,21,13,55,77};
int length=array.length;
StringBuilder sb= new StringBuilder();
for(int i=0;i<length;i++){
sb.append(array[i]+"s");
}
for(int i=0;i<length;i++){
int firstPosition=sb.indexOf(array[i]+"s");
int endPosition=sb.lastIndexOf(array[i]+"s");
if(firstPosition==endPosition)
System.out.println("出现一次的是:"+array[i]);
else
System.out.println("出现多次的是:"+array[i]);
}
}</span>