[Question quotidienne LeetCode] [Difficulté] 454. Ajout de quatre nombres II

[Question quotidienne LeetCode] [Difficulté] 454. Ajout de quatre nombres II

454. Addition de quatre nombres II

454. Addition de quatre nombres II

Idée d'algorithme: combinaison

sujet:

Insérez la description de l'image ici

code java

  1. Divisé en la somme de deux nombres A + B, la somme de deux nombres C + D,
  2. Ensuite, jugez combien de types de (A + B) + (C + D) y a-t-il
  3. Les résultats de A + B peuvent être enregistrés à l'aide de la carte, ce qui accélère la recherche
class Solution {
    
    
    //思路,分成两个数之和A+B,两个数之和C+D,然后再判断(A+B)+(C+D)有多少种
    public int fourSumCount(int[] A, int[] B, int[] C, int[] D) {
    
    
        //使用map存储A+B的值,提高查找效率
		Map<Integer, Integer> map = new HashMap<Integer, Integer>();
		int n = A.length;
        //遍历A+B的所有组合,用map记录结果
		for (int i = 0; i < n; i++) {
    
    
			for (int j = 0; j < n; j++) {
    
    
				map.put(A[i]+B[j], map.getOrDefault(A[i]+B[j], 0)+1);
			}
		}
		int ans = 0;
        //遍历C+D的所有组合,再查询map,看能否找到元组
		for (int i = 0; i < n; i++) {
    
    
			for (int j = 0; j < n; j++) {
    
    
				if (map.containsKey(-C[i]-D[j])) {
    
    
					ans += map.get(-C[i]-D[j]);
				}
			}
		}
		return ans;
    }
}

Je suppose que tu aimes

Origine blog.csdn.net/qq_39457586/article/details/110248493
conseillé
Classement