Map.getOrDefault(Object key, V defaultValue);
如果在Map中存在key,则返回key所对应的的value。
如果在Map中不存在key,则返回默认值。
例如:
map.put(num, map.getOrDefault(num, 0) + 1),表示:value默认从1开始,每次操作后num对应的value值加1
可以用来统计数字出现的次数!
数组中占比超过一半的元素称之为主要元素。给定一个整数数组,找到它的主要元素。若没有,返回-1。
示例 1:
输入:[1,2,5,9,5,9,5,5,5]
输出:5
示例 2:
输入:[3,2]
输出:-1
示例 3:
输入:[2,2,1,1,1,2,2]
输出:2
JAVA 代码如下:
class Solution {
public int majorityElement(int[] nums) {
Map<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < nums.length; i++) {
map.put(nums[i], map.getOrDefault(nums[i], 0) + 1);
if (map.get(nums[i]) > nums.length / 2) {
return nums[i];
}
}
return -1;
}
}
执行结果:
1748. 唯一元素的和
给你一个整数数组 nums 。数组中唯一元素是那些只出现 恰好一次 的元素。请你返回 nums 中唯一元素的和 。
提示:
1 <= nums.length <= 100
1 <= nums[i] <= 100
示例 1:
输入:nums = [1,2,3,2]
输出:4
解释:唯一元素为 [1,3] ,和为 4 。
示例 2:
输入:nums = [1,1,1,1,1]
输出:0
解释:没有唯一元素,和为 0 。
代码如下:
class Solution {
public int sumOfUnique(int[] nums) {
HashMap<Integer, Integer> map = new HashMap<>();
int n = nums.length;
int k = 0;
int sum = 0;
for (int num : nums) {
map.put(num, map.getOrDefault(num, 0) + 1);
}
for (var entry : map.entrySet()) {
if (entry.getValue() == 1) {
sum += entry.getKey();
}
}
return sum;
}
}
执行结果: