566просмотров
6.3%от подписчиков
14 марта 2026 г.
statsScore: 623
Задача: 1013. Partition Array Into Three Parts With Equal Sum
Сложность: easy Если задан массив целых чисел arr, верните true, если мы можем разбить массив на три непустые части с равными суммами. Формально, мы можем разбить массив, если можем найти индексы i + 1 < j с (arr[0] + arr[1] + ... + arr[i] == arr[i + 1] + arr[i + 2] + ... + arr[j - 1] == arr[j] + arr[j + 1] + ... + arr[arr.length - 1]) Пример:
Input: arr = [0,2,1,-6,6,-7,9,1,2,0,1]
Output: true 👨💻 Алгоритм: 1⃣Вычисление общей суммы:
Вычислите общую сумму всех элементов массива. Если эта сумма не делится на 3 без остатка, вернуть false, так как невозможно разбить массив на три части с равной суммой. 2⃣Поиск первой и второй части:
Итерируйте по массиву и ищите первую часть с суммой, равной одной трети от общей суммы. Продолжайте итерацию для поиска второй части с такой же суммой.
Убедитесь, что между первой и второй частью есть хотя бы один элемент. 3⃣Проверка третьей части:
Убедитесь, что оставшаяся часть массива также имеет ту же сумму, что и две найденные части. Если да, вернуть true, иначе false. 😎 Решение:
class Solution { canThreePartsEqualSum(arr) { const totalSum = arr.reduce((sum, num) => sum + num, 0); if (totalSum % 3 !== 0) { return false; } const target = totalSum / 3; let partSum = 0, count = 0; for (let i = 0; i < arr.length; i++) { partSum += arr[i]; if (partSum === target) { count++; partSum = 0; if (count === 2 && i < arr.length - 1) { return true; } } } return false; }
} Ставь 👍 и забирай 📚 Базу знаний