题目:原题链接(中等)
标签:贪心算法、数学、动态规划
解法 | 时间复杂度 | 空间复杂度 | 执行用时 |
---|---|---|---|
Ans 1 (Python) | O ( N l o g N ) O(NlogN) O(NlogN) | O ( N ) O(N) O(N) | 40ms (68.75%) |
Ans 2 (Python) | |||
Ans 3 (Python) |
解法一:
class Solution:
def minimizeError(self, prices: List[str], target: int) -> str:
prices = [float(price) for price in prices]
min_price = sum(floor(price) for price in prices)
max_price = sum(ceil(price) for price in prices)
if not min_price <= target <= max_price:
return "-1"
ceil_num = target - min_price # 向下取整数量
floor_num = max_price - target # 向上取整数量
floor_val = [price - floor(price) for price in prices if price != floor(price)]
ceil_val = [ceil(price) - price for price in prices if price != ceil(price)]
floor_val.sort()
ceil_val.sort()
return "{0:.3f}".format(sum(floor_val[:floor_num]) + sum(ceil_val[:ceil_num]))