- Leetcode 3107. Minimum Operations to Make Median of Array Equal to K
- 1. 解题思路
- 2. 代码实现
- 题目链接:3107. Minimum Operations to Make Median of Array Equal to K
1. 解题思路
这一题思路上其实也比较直接,首先要使得中位数恰好为 k k k,我们只需要排序之后找到原本的中位数 m m m,然后分下述三种情况讨论即可:
- m = k m=k m=k:此时直接返回0即可;
- m < k m<k m<k:此时只需要把 m m m连同后半部分当中所有小于 k k k的数全部变为 k k k即可;
- m > k m>k m>k:此时只需要把 m m m连同前半部分当中所有大于 k k k的数全部变为 k k k即可;
我们将其翻译为代码语言即可完成本题的解答。
2. 代码实现
给出python代码实现如下:
class Solution:def minOperationsToMakeMedianK(self, nums: List[int], k: int) -> int:nums = sorted(nums)n = len(nums)mid = n // 2if nums[mid] == k:return 0i = midans = 0if nums[mid] > k:while i >= 0 and nums[i] > k:ans += nums[i]-ki -= 1else:while i < n and nums[i] < k:ans += k - nums[i]i += 1return ans
提交代码评测得到:耗时611ms,占用内存38.1MB。