- Leetcode 3072. Distribute Elements Into Two Arrays II
- 1. 解題思路
- 2. 代碼實現
- 題目鏈接:3072. Distribute Elements Into Two Arrays II
1. 解題思路
這一題不太明白為啥被劃分為了hard的題目,我們只需要按照題意構造一下arr1
和arr2
即可,唯一的難點就在于greaterCount(arr, val)
函數的實現,不過我們也只需要另外在構造一組有序的arr1
和arr2
即可快速得到其結果了。
2. 代碼實現
給出python代碼實現如下:
class Solution:def resultArray(self, nums: List[int]) -> List[int]:arr1 = [nums[0]]arr2 = [nums[1]]sorted_arr1 = [nums[0]]sorted_arr2 = [nums[1]]def greater_count(arr, val):idx = bisect.bisect_right(arr, val)return len(arr)-idxfor x in nums[2:]:a, b = greater_count(sorted_arr1, x), greater_count(sorted_arr2, x)if a > b:bisect.insort(sorted_arr1, x)arr1.append(x)elif a < b:bisect.insort(sorted_arr2, x)arr2.append(x)elif len(arr1) <= len(arr2):bisect.insort(sorted_arr1, x)arr1.append(x)else:bisect.insort(sorted_arr2, x)arr2.append(x)return arr1 + arr2
提交代碼評測得到:耗時2171ms,占用內存34.7MB。