题解 | #数组中只出现一次的两个数字#

数组中只出现一次的两个数字

https://www.nowcoder.com/practice/389fc1c3d3be4479a154f63f495abff8

package com.hhdd.哈希;

import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;

/**
 * @Author huanghedidi
 * @Date 2022/8/13 15:18
 */
public class 数组中只出现一次的两个数字 {

    public static void main(String[] args) {
        int[] arr = {1,2,3,3,2,9};
        int[] res = FindNumsAppearOnce(arr);
        System.out.println("res = " + Arrays.toString(res));
    }

    /**
     * 题目有个条件是其他数字都是出现2次,说明不会有3,4,次这种情况
     *
     * @param array
     * @return
     */
    public static int[] FindNumsAppearOnce(int[] array) {
        // write code here
        HashSet<Integer> set = new HashSet<>();
        for (int i = 0; i < array.length; i++) {
            int tmp = array[i];
            if (set.contains(tmp)) {
                set.remove(tmp);
            } else {
                set.add(tmp);
            }
        }
        int[] res = new int[set.size()];
        int index = 0;
        for (Integer item : set) {
            res[index++] = item;
        }
        Arrays.sort(res);
        return res;
    }
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务