Find the unique number

问题

一个数组中除了一个数字外,其他所有的数字都是相等的,找出那个不一样的数字。

例子

Kata.findUniq(new double[]{ 1, 1, 1, 2, 1, 1 }); // => 2
Kata.findUniq(new double[]{ 0, 0, 0.55, 0, 0 }); // => 0.55

我的代码

package codewars;

import java.util.HashSet;
import java.util.Set;

public class UniqNum {
    public static double findUniq(double arr[]) {
        Set<Double> uniqSet = new HashSet<>();
        Set<Double> set = new HashSet<>();
        for (double value : arr) {
            if (set.contains(value)) {
                continue;
            }
            if (uniqSet.contains(value)) {
                set.add(value);
                uniqSet.remove(value);
            } else {
                uniqSet.add(value);
            }
        }
        return uniqSet.iterator().next();
    }

    public static void main(String[] args) {
        System.out.println(UniqNum.findUniq(new double[]{1, 1, 1, 2, 1, 1}));

    }
}

别人的代码

package codewars;

import java.util.Arrays;

public class UniqNum {
    public static double findUniq(double arr[]) {
        Arrays.sort(arr);
        return arr[0] == arr[1] ? arr[arr.length-1]:arr[0];

    }

    public static void main(String[] args) {
        System.out.println(UniqNum.findUniq(new double[]{1, 1, 1, 2, 1, 1}));
    }
}

分析

我的代码是通过一次遍历筛选出唯一值,别人的代码是先排序后找出唯一值。思路不一样,性能上差不多。就是别人的比较简洁。

猜你喜欢

转载自blog.csdn.net/qqqq0199181/article/details/80733927
今日推荐