LeetCode - 1748. 唯一元素的和——数组

1748. 唯一元素的和

题目描述

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

请你返回 nums 中唯一元素的 和 。

示例 1:

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

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

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

解题思路


import java.util.HashMap;
import java.util.Map;

//leetcode submit region begin(Prohibit modification and deletion)
class Solution_1748 {
    /**
     * 哈希表
     *
     * @param nums
     * @return
     */
    public int sumOfUnique_1(int[] nums) {
        HashMap<Integer, Integer> map = new HashMap<>();
        for (int i = 0; i < nums.length; i++) {
            map.put(nums[i], map.getOrDefault(nums[i], 0) + 1);
        }
        int sum = 0;
        for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
            if (entry.getValue() == 1) {
                sum += entry.getKey();
            }
        }
        return sum;
    }

    /**
     * 计数法
     * @param nums
     * @return
     */
    public int sumOfUnique_2(int[] nums) {
        int n = nums.length;
        if (n == 1){
            return nums[0];
        }
        int[] arr = new int[101];
        for (int v : nums) {
            arr[v]++;
        }
        int res = 0;
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] == 1)
                res += i;
        }
        return res;
    }

    //利用HashMap存储标识:首次遇到累加,第二次遇到减掉,第三次往后再遇到不处理。
    public int sumOfUnique(int[] nums) {
        int n = nums.length;
        if (n == 1)
            return nums[0];
        Map<Integer,Integer> map = new HashMap<>();
        int res = 0;
        for (int i = 0; i < n; i++) {
            Integer v = map.get(nums[i]);
            if (v == null){
                res += nums[i];
                map.put(nums[i],1);
            }else if (v > 0){
                res -= nums[i];
                map.put(nums[i],0);
            }
        }
        return res;

    }

}
//leetcode submit region end(Prohibit modification and deletion)

posted @ 2021-03-27 21:54  your_棒棒糖  阅读(110)  评论(0编辑  收藏  举报