這期內(nèi)容當中小編將會給大家?guī)碛嘘P(guān)leetcode中如何實現(xiàn)數(shù)組拆分,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
成都創(chuàng)新互聯(lián)公司為企業(yè)級客戶提高一站式互聯(lián)網(wǎng)+設(shè)計服務(wù),主要包括做網(wǎng)站、網(wǎng)站設(shè)計、app軟件定制開發(fā)、小程序開發(fā)、宣傳片制作、LOGO設(shè)計等,幫助客戶快速提升營銷能力和企業(yè)形象,創(chuàng)新互聯(lián)各部門都有經(jīng)驗豐富的經(jīng)驗,可以確保每一個作品的質(zhì)量和創(chuàng)作周期,同時每年都有很多新員工加入,為我們帶來大量新的創(chuàng)意。
一、題目內(nèi)容
給定長度為 2n 的整數(shù)數(shù)組 nums ,你的任務(wù)是將這些數(shù)分成 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
解釋:最優(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中如何實現(xiàn)數(shù)組拆分了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。