LeetCode-1748. Suma de elementos únicos-Array

El 1748.

Descripción del Título

Le da una matriz de números enteros. Los únicos elementos de la matriz son los que aparecen exactamente una vez.

Devuelve la suma de los únicos elementos en números.

Ejemplo 1:

Entrada: nums = [1,2,3,2]
Salida: 4
Explicación: El único elemento es [1,3] y la suma es 4.
Ejemplo 2:

Entrada: nums = [1,1,1,1,1]
Salida: 0
Explicación: No hay un elemento único y la suma es 0.
Ejemplo 3:

Entrada: nums = [1,2,3,4,5]
Salida: 15
Explicación: El único elemento es [1,2,3,4,5] y la suma es 15.

Ideas para resolver problemas


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)

Supongo que te gusta

Origin blog.csdn.net/qq_35655602/article/details/115272619
Recomendado
Clasificación