您好,登錄后才能下訂單哦!
這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)碛嘘P(guān)leetcode中如何實(shí)現(xiàn)數(shù)組拆分,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
一、題目內(nèi)容
給定長度為 2n 的整數(shù)數(shù)組 nums ,你的任務(wù)是將這些數(shù)分成 n 對(duì), 例如 (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
解釋:最優(yōu)的分法為 (2, 1), (2, 5), (6, 6). min(2, 1) + min(2, 5) + min(6, 6) = 1 + 2 + 6 = 9
提示:
1 <= n <= 10*4
nums.length == 2 * n
-10^4 <= nums[i] <= 10^4
貪心算法,排序之后,直接找奇數(shù)位置的值累加即可。
class Solution: def arrayPairSum(self, nums: list) -> int: sorted_nums = sorted(nums) ans = 0 for i in range(0, len(sorted_nums), 2): ans += sorted_nums[i] return ans if __name__ == '__main__': s = Solution() nums = [6, 2, 6, 5, 1, 2] ans = s.arrayPairSum(nums) print(ans)
上述就是小編為大家分享的leetcode中如何實(shí)現(xiàn)數(shù)組拆分了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。