【数据结构——数组(四)】找到数组中第一个不重复出现的整数

版权声明:本文为博主原创文章,未经博主允许不得转载。 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;
    }
}

猜你喜欢

转载自blog.csdn.net/Lily_9/article/details/87975201