LEETCODE [39], то первый вопрос, массив разделы I 561

Пакет y2019.Algorithm.array; 

/ ** 
 * @ProjectName: Резак-Point 
 * @package: y2019.Algorithm.array 
 * @ClassName: ArrayPairSum 
 * @author: xiaof 
 * @Description: Массив 561. Разделяют I 
 * в заданном массиве целые числа 2N, ваш к целевой группе ИС в этом п пары целых чисел Integer, 
 * говорит (A1, B1), (A2, B2), ..., (AN, BN) от суммы , которая делает мин (AI, BI) для . от 1 до I н-все как , как это возможно большим. 
 * 
 * Входные: [1,4,3,2] 
 * 
 * Вывод :. 4 
 * Пояснение: 2 п-IS, а максимум 4 пары SUM = мин (1, 2.. ..) + мин (3 ,. 4) 
 * 
 * задана длина 2N (даже) массив, разделенный на п групп, причем каждая группа возвращает меньшее значение и сумму, так что , как большая сумма 
 * @date: 2019/7 / 2 17:24 
 * @version: 1,0
 * / 
Открытый  класс {ArrayPairSum 

    общественного  ИНТ решения ( ИНТ [] в НУМСЕ) {
         // находит значение каждого небольшого вопроса, окончательного суммирование, как можно больше, что близко к набору данных предпочтительно размещают, или разрыв большое, приведет к конечному значению сильно отличается 
        quikSort (в НУМС, 0 , nums.length);
         // затем сливает последовательность, и сбор данных может быть растопыренным 
        Int Result = 0 ;
         для ( INT I = 0; I <с НУМСОМ. длина; = I + 2 ) { 
            Результат + = в НУМС [I]; 
        } 
        возвращение результата; 
    } 

    Частная  пустота quikSort ( INT [] массив, Int слева, INTсправа) {
         если (слева < справа) {
             INT середины = partitionSort (массив, слева, справа); 
            quikSort (массив, слева, в середине); 
            quikSort (массив, середина + 1 , справа); 
        } 
    } 

    Частные  INT partitionSort ( INT [] массив, Int слева, Int справа) {
 //         если (слева == правый || левый> правый) {
 //             вернуться влево;
//         } 

        INT midValue = массив [влево];
        INT начать = слева;
        ИНТконец = вправо; 

        // 分区排序
        делать { 

            делать {++ старт; } В то время (начало <правый && массив [пуск] < midValue); 

            делать {
                 - конец; 
            } В то время как (левая <конец массива && [End]> midValue); 

            // 交换 , 
            если (начало < конец) {
                 INT Temp = массива [пуск]; 
                Массив [пуск] = массив [конец]; 
                Массив [конец] = темп; 
            } 

        } В то время (начало < конец);

        // После завершения обмена, окончательное отверстие , чтобы заполнить его, на этот раз влево и вправо в шахматном порядке, так правильно и покинул левый 
        Array [слева] = Array [End]; 
        Array [End] = midValue; 

        вернуться конец; 
    } 

    общественности  статический  недействительный основной (String арг []) {
         INT А1 [] = {1,4,3,2 }; 
        ArrayPairSum Fuc = новый новый ArrayPairSum (); 
        System.out.println (fuc.solution (А1)); 
    } 

}

 

рекомендация

отwww.cnblogs.com/cutter-point/p/11128142.html