LeetCode] [1013. Array partition en trois parties avec l'égalité Somme et le tableau est divisé en trois parties égales (Easy) (JAVA)

LeetCode] [1013. Array partition en trois parties avec l'égalité Somme et le tableau est divisé en trois parties égales (Easy) (JAVA)

Sujet Adresse: https://leetcode.com/problems/partition-array-into-three-parts-with-equal-sum/

Description du sujet:

Compte tenu de l'un tableau d'entiers, return true si et seulement si nous pouvons diviser le tableau en trois parties non vides avec des sommes égales.

, Nous pouvons Formellement partitionner le tableau si nous pouvons trouver des indices i + 1 <j avec (A [0] + A [1] + ... + A [i] == A [i + 1] + A [i + 2] + ... + A [j-1] == A [j] + A [j-1] + ... + A [a.length - 1])

Exemple 1:

Input: A = [0,2,1,-6,6,-7,9,1,2,0,1]
Output: true
Explanation: 0 + 2 + 1 = -6 + 6 - 7 + 9 + 1 = 2 + 0 + 1

Exemple 2:

Input: A = [0,2,1,-6,6,7,9,-1,2,0,1]
Output: false

Exemple 3:

Input: A = [3,3,6,5,-2,2,5,1,-9,4]
Output: true
Explanation: 3 + 3 = 6 = 5 - 2 + 2 + 5 + 1 - 9 + 4

Contraintes:

1. 3 <= A.length <= 50000
2. -10^4 <= A[i] <= 10^4

Sous réserve de l'effet

Pour vous donner un tableau d'entiers A, ne peut retourner en trois égaux et non nuls seulement une partie vrai, sinon faux.

Formellement, si nous pouvons trouver l'indice i + 1 <j satisfaisant (A [0] + A [1] + ... + A [i] == A [i + 1] + A [i + 2] + ... + A [j-1] == A [j] + A [j-1] + ... + A [a.length - 1]) peut être un tableau de trois aliquotes.

approche de résolution de problèmes

1, et l'élément de tableau SUM
2, traversé successivement trouver la somme / 3 -> somme / 3 * 2 deux nœuds
noter: somme = attention particulière 0

class Solution {
    public boolean canThreePartsEqualSum(int[] A) {
        int sum = 0;
        for (int i = 0; i < A.length; i++) {
            sum += A[i];
        }
        if (sum % 3 != 0) return false;
        int cur = 0;
        boolean first = false;
        for (int i = 0; i < A.length; i++) {
            cur += A[i];
            if (!first && cur == sum / 3) {
                first = true;
                continue;
            }
            if (first && cur == sum / 3 * 2 && i < (A.length - 1)) return true;
        }
        return false;
    }
}

Lorsque l' exécution: 1 ms, battu 100,00% de tous les utilisateurs à soumettre en Java la
consommation de mémoire: 45 Mo, vaincu 100.00% des utilisateurs dans toute soumission Java

Publié 81 articles originaux · a gagné les éloges 6 · vues 2287

Je suppose que tu aimes

Origine blog.csdn.net/qq_16927853/article/details/104789555
conseillé
Classement