Leetcode 561 陣列拆分 I

2022-02-08 05:09:23 字數 793 閱讀 8980

給定長度為 2n 的陣列, 你的任務是將這些數分成 n 對, 例如 (a1, b1), (a2, b2), ..., (an, bn) ,使得從1 到 n 的 min(ai, bi) 總和最大。

示例 1:

輸入: [1,4,3,2]

n 是正整數,範圍在 [1, 10000].

陣列中的元素範圍在 [-10000, 10000].

/*

思路:排序,然後將下標為 0、2、4 ... 個數相加即可。

由於是純數字,並且限定了數字範圍,所以可使用基數排序達到 o(n) 複雜度。

數字範圍 [-10000, 10000],所以可建立 n[20001],對每個元素加 10000 使其變為正數。

*/int arraypairsum(int* nums, int

numssize)

, i, j, sum;

for (i = 0; i < numssize; i++) //

建立值、鍵雜湊表,即基數排序

n[nums[i] + 10000]++; //

保證下標為正數

for (i = j = sum = 0; i < 20001; ) //

將下標為 0、2、4 ... 的相加

else i++; //

不存在,跳過該值

}return

sum;

}

LeetCode561 陣列拆分 I

給定長度為2n的陣列,你的任務是將這些數分成n對,例如 a1,b1 a2,b2 an,bn 使得從1 到 n 的 min ai,bi 總和最大。示例 1 輸入 1,4,3,2 輸出 4 解釋 n 等於 2,最大總和為 4 min 1,2 min 3,4 n是正整數,範圍在 1,10000 陣列中的元...

LeetCode 561 陣列拆分 I

給定長度為2n的陣列,你的任務是將這些數分成n對,例如 a1,b1 a2,b2 an,bn 使得從1 到 n 的 min ai,bi 總和最大。示例 1 輸入 1,4,3,2 輸出 4 解釋 n 等於 2,最大總和為 4 min 1,2 min 3,4 n是正整數,範圍在 1,10000 陣列中的元...

LeetCode 561 陣列拆分I

給定長度為 2n 的陣列,你的任務是將這些數分成 n 對,例如 a1,b1 a2,b2 an,bn 使得從1 到 n 的 min ai,bi 總和最大。示例 1 輸入 1,4,3,2 n 是正整數,範圍在 1,10000 陣列中的元素範圍在 10000,10000 1 按照題目的要求,如果想得從1 ...