剑指Offer——数组中只出现一次的数字

    技术2025-02-03  9

    题目描述:

    数组中只出现一次的数字: 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。

    解题思路:

    1、水题,总结两种方法。 2、第一种就是利用数组下标的方法,简单利于理解。 3、第二种方法是用HashMap的方法。

    参考代码:

    import java.util.Arrays; import java.util.HashMap; public class t_3 { public void FindNumsAppearOnce(int [] array,int num1[] , int num2[]) { Arrays.sort(array); int max=array[array.length-1]; int[] array2=new int[max+5]; for(int i=0;i<array.length;i++) { array2[array[i]]++; } int[] arr=new int[2]; int k=0; for(int i=0;i<array2.length;i++) { if(array2[i]==1) { arr[k]=i; k++; } } num1[0]=arr[0]; num2[0]=arr[1]; } public void FindNumsAppearOnce2(int [] array,int num1[] , int num2[]) { HashMap<Integer,Integer> map=new HashMap<>(); for(int i=0;i<array.length;i++){ if(map.containsKey(array[i])){ map.put(array[i],2); } else { map.put(array[i],1); } } int count=0; for (int i = 0; i < array.length; i++) { if(map.get(array[i])==1) { if(count==0) { num1[0]=array[i]; count++; } else { num2[0]=array[i]; } } } } }
    Processed: 0.009, SQL: 9