diff --git "a/leetcode3/\354\265\234\354\233\220\354\244\200/3774. Absolute Difference Between Maximum and Minimum K Elements.py" "b/leetcode3/\354\265\234\354\233\220\354\244\200/3774. Absolute Difference Between Maximum and Minimum K Elements.py" new file mode 100644 index 00000000..a5b970e1 --- /dev/null +++ "b/leetcode3/\354\265\234\354\233\220\354\244\200/3774. Absolute Difference Between Maximum and Minimum K Elements.py" @@ -0,0 +1,8 @@ +class Solution: + def absDifference(self, nums: List[int], k: int) -> int: + nums.sort() + n = len(nums) + ans = 0 + for i in range(k): + ans += nums[n-i-1] - nums[i] + return ans diff --git "a/leetcode3/\354\265\234\354\233\220\354\244\200/870. Advantage Shuffle.py" "b/leetcode3/\354\265\234\354\233\220\354\244\200/870. Advantage Shuffle.py" new file mode 100644 index 00000000..46c3a2f0 --- /dev/null +++ "b/leetcode3/\354\265\234\354\233\220\354\244\200/870. Advantage Shuffle.py" @@ -0,0 +1,28 @@ +class Solution: + def advantageCount(self, nums1: List[int], nums2: List[int]) -> List[int]: + def get_sorted_queue(nums): + num = [[nums[i], i] for i in range(len(nums))] + num.sort() + return deque(num) + + queue1 = get_sorted_queue(nums1) + queue2 = get_sorted_queue(nums2) + ans = [0] * len(nums1) + + while queue1 and queue2: + biggest1, _ = queue1[-1] + smallest1, _ = queue1[0] + + biggest2, index1 = queue2[-1] + smallest2, index2 = queue2[0] + + if biggest1 > biggest2: + biggest1, _ = queue1.pop() + biggest2, index1 = queue2.pop() + ans[index1] = biggest1 + else: + smallest1, _ = queue1.popleft() + biggest2, index2 = queue2.pop() + ans[index2] = smallest1 + + return ans