版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Lily_9/article/details/87975201
思路一:用数组存储每个数字出现的次数,但题目只需要找到第一个不重复出现的数,故浪费空间,O(N^2)
思路二:双循环,找到第一个不重复,即返回,O(N^2)
代码1:
/**
* 找出数组中第一个不重复的数字,如果没有就返回null
*/
public class FirstDupNum {
@Test
public void start() {
int [] arr ={1,2,3,9,7,66,5,5,4,66,3,7,2,9,0,0,1,4};
System.out.println(handler(arr));
}
public Integer handler(int [] arr){
Integer position=null;
for (int i = 0; i < arr.length; i++) {
for (int j =0; j <arr.length ; j++) {
if(i!=j&&arr[i]==arr[j]){
position=j;
break;
}
if(j==arr.length-1){
position=arr.length;
}
}
if(position==arr.length){
return arr[i];
}
}
return null;
}
}
代码2:
/**
* 找出数组中第一个不重复的数字
*/
#define Length(arr) (sizeof(arr)/sizeof(int))
void main() {
int arr[18] ={1,2,3,9,7,66,5,5,4,8,3,7,2,9,0,0,1,4};
handler(&arr,Length(arr));
}
int handler(int *arr,int length){
for (int i = 0; i < length; i++) {
int count = 0;
for (int j = 0; j < length ; j++) {
if(i!=j&&arr[i]==arr[j]){
count++;
break;
}
}
if(count==0){
print("%d",arr[i]);
break;
}
}
return 0;
}
}