題目鏈結
題目描述
給定長度為 2n 的整數陣列 nums ,你的任務是將這些數分成 n 對, 例如 (a1, b1), (a2, b2), ..., (an, bn) ,使得從 1 到 n 的 min(ai, bi) 總和最大。
返回該 最大總和 。
示例 1:
輸入:nums = [1,4,3,2]
輸出:4
解釋:所有可能的分法(忽略元素順序)為:
1. (1, 4), (2, 3) -> min(1, 4) + min(2, 3) = 1 + 2 = 3
2. (1, 3), (2, 4) -> min(1, 3) + min(2, 4) = 1 + 2 = 3
3. (1, 2), (3, 4) -> min(1, 2) + min(3, 4) = 1 + 3 = 4
所以最大總和為 4
示例 2:
輸入:nums = [6,2,6,5,1,2]
輸出:9
解釋:最優的分法為 (2, 1), (2, 5), (6, 6). min(2, 1) + min(2, 5) + min(6, 6) = 1 + 2 + 6 = 9
題目分析
根據題目描述選取nums中組合最大總和
使用快速排序nums,nums偶數下標的和即為所求
**
class solution
return sum;
}private:
void quicksort(vector& nums, int l, int r)
if (i < j)
while (i < j && x > nums[i])
if (i < j)
}nums[i] = x;
quicksort(nums, l, i - 1);
quicksort(nums, i + 1, r);
}};
561 陣列拆分 I 力扣
題目 給定長度為 2n 的整數陣列 nums 你的任務是將這些數分成 n 對,例如 a1,b1 a2,b2 an,bn 使得從 1 到 n 的 min ai,bi 總和最大。返回該 最大總和 示例 1 輸入 nums 1,4,3,2 輸出 4 解釋 所有可能的分法 忽略元素順序 為 1,4 2,3 ...
力扣刷題 陣列系列 2
刷題的順序,按照前輩的leetcode cookbook上的順序 給定乙個排序陣列,你需要在 原地 刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。不要使用額外的陣列空間,你必須在 原地 修改輸入陣列 並在使用 o 1 額外空間的條件下完成 思考 1.題目要求原地刪除重複的元素,...
力扣刷題系列 貪心思想I
以下內容參考於 與 僅作為個人日後複習查閱。貪心演算法總是作出在當前看來最好的選擇,也就是說貪心演算法並不從整體最優考慮,它所作出的選擇只是在某種意義上的區域性最優選擇。只有在滿足最優子結構的情況下貪心演算法得到的結果才是最優結果。比如找錢的問題,我要給你一百,那麼我盡可能每一次給你最多的。或者比如...