题目浅析

  • 想查看原题可以点击题目链接

  • 简单地说,就是给一个数组,现在需要你对这个数组做操作,即取一个数减半,求整个数组之和不大于原来一半的最少操作数。

思路分享

代码解答(强烈建议自行解答后再看)

  • 参考题解
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Solution:
def halveArray(self, nums: List[int]) -> int:
s = sum(nums) / 2
cur_s = 0
for i in range(len(nums)):
nums[i] = -nums[i]
heapq.heapify(nums)
ans = 0
while(cur_s < s):
ans += 1
new_num = nums[0]/2
cur_s -= new_num
heapq.heapreplace(nums, new_num)
# print(cur_s)
# print(nums)
return ans