1748. 唯一元素的和

题目

给你一个整数数组 nums 。数组中唯一元素是那些只出现 恰好一次 的元素。

请你返回 nums 中唯一元素的

示例1:

1
2
3
输入:nums = [1,2,3,2]
输出:4
解释:唯一元素为 [1,3] ,和为 4 。

示例2:

1
2
3
输入:nums = [1,1,1,1,1]
输出:0
解释:没有唯一元素,和为 0 。

示例3:

1
2
3
输入:nums = [1,2,3,4,5]
输出:15
解释:唯一元素为 [1,2,3,4,5] ,和为 15 。

提示:

  • 1 <= nums.length <= 100
  • 1 <= nums[i] <= 100

解法

解法一:

Java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public int sumOfUnique(int[] nums) {
int[] count = new int[101];
for (int n : nums) {
count[n]++;
}

int result = 0;
for (int i = 0;i < count.length;i++) {
if (count[i] == 1) {
result += i;
}
}
return result;
}

解法二:

Java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public int sumOfUnique(int[] nums) {
Map<Integer, Integer> map = new HashMap<>(nums.length);
for (int i = 0;i < nums.length;i++) {
map.put(nums[i], map.getOrDefault(nums[i], 0) + 1);
}

int result = 0;
for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
if (1 == entry.getValue()) {
result += entry.getKey();
}
}
return result;
}

解法三:

Java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public int sumOfUnique(int[] nums) {
Arrays.sort(nums);
int result = 0;

if (2 > nums.length) {
return nums[0];
}

if (nums[0] != nums[1]) {
result += nums[0];
}

for (int i = 1;i < nums.length - 1;i++) {
if (nums[i] != nums[i + 1] && nums[i - 1] != nums[i]) {
result += nums[i];
}
}

if (nums[nums.length - 2] != nums[nums.length - 1]) {
result += nums[nums.length - 1];
}

return result;
}
0%