判断数组中的所有的数字是否只出现一次。
给定一个数组 array,判断数组 array 中是否所有的数字只出现一次。
例如,arr = {1, 2, 3}
,输出 YES
。
又如,arr = {1, 2, 1}
,输出 NO
。
约束时间复杂度为 O(n)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| public class Main { public static void main(String[] args) { final int[] data1 = {1, 2, 3}; final int[] data2 = {1, 2, 1};
System.out.println(getOnlyOnceStatus1(data1)); System.out.println(getOnlyOnceStatus1(data2)); }
private static String getOnlyOnceStatus1(int[] data) {
Set<Integer> result = new HashSet<>(data.length); for (int datum : data) { if (!result.add(datum)) { return "NO"; } }
if (result.size() == data.length) { return "YES"; } return "NO"; } }
|
找出数组中只出现一次的数字,其它数字都出现了两次
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| public class Main { public static void main(String[] args) { final int[] data1 = {1, 2, 3, 3, 2, 1, 4, 6, 4}; final int[] data2 = {1, 2, 1};
System.out.println(xorIntArray(data1)); System.out.println(xorIntArray(data2)); }
private static Integer xorIntArray(int[] data) {
if (data == null || data.length == 0) { return null; } if (data.length == 1) { return data[0]; } int result = data[0]; for (int i = 1; i < data.length; i++) { result ^= data[i]; }
return result; } }
|