Рубрики
Uncategorized

Проблема с PHP-кодом Leetcode–D14 561. Раздел массива I

Автор оригинала: David Wong.

Ссылка на Заголовок

561. Раздел I массива

Анализ названия

Этот вопрос дает массив, требующий, чтобы массив был разделен на n пар только из двух элементов. Сделайте сумму наименьшего числа в каждой паре чисел наибольшей.

размышляющий

Во-первых, нам нужно соединить компоненты в две пары. используйте array_chunk Да.

Во-вторых, нам нужно взять наименьшее число в каждой паре чисел для суммирования. Потому что нам нужно, чтобы конечная сумма была наибольшей, но наименьшей в каждом наборе чисел. Поэтому, чтобы свести к минимуму разницу между наибольшим числом и наименьшим массивом в каждой группе, “потери” могут быть сведены к минимуму.

Например, [1,2,7,8]

Если разделить на [[1,8],[2,7]] или [[1,7],[2,8]] Две группы, затем каждая группа получит самую маленькую. [1,2] . Сумма равна 3. Когда большие числа и меньшие числа образуют пару, большие числа нельзя использовать для суммирования (потому что название занимает наименьшее число в каждой группе). При разделении на [[1,2],[7,8]] Когда две группы будут выбраны как самые маленькие, они получат результаты. [1,7] . Сумма равна 8, больше 3.

Поэтому массив сначала сортируется, а затем группируется в две или две группы, чтобы получить 0-й элемент из каждой группы для участия в вычислении.

Окончательный код

php
class Solution {
    function arrayPairSum($nums) {
        sort($nums);
        $a = array_chunk($nums,2);
        return array_sum(array_column($a,0));
    }
}

Если вы считаете, что эта статья полезна для вас, вы можете воспользоваться Фондом генерации энергии Ии.