网站建设的售后服务怎么写,惠州网络问政平台,平面设计培训班有用吗,上海设计网站设计2517. 礼盒的最大甜蜜度 给你一个正整数数组 price #xff0c;其中 price[i] 表示第 i 类糖果的价格#xff0c;另给你一个正整数 k 。 商店组合 k 类 不同 糖果打包成礼盒出售。礼盒的 甜蜜度 是礼盒中任意两种糖果 价格 绝对差的最小值。 返回礼盒的 最大 甜蜜度。 记录一…2517. 礼盒的最大甜蜜度 给你一个正整数数组 price 其中 price[i] 表示第 i 类糖果的价格另给你一个正整数 k 。 商店组合 k 类 不同 糖果打包成礼盒出售。礼盒的 甜蜜度 是礼盒中任意两种糖果 价格 绝对差的最小值。 返回礼盒的 最大 甜蜜度。 记录一下二分查找的时候几个边界条件
DEBUG False
ITER 100class Solution:def maximumTastiness(self, price: List[int], k: int) - int:sorted_price sorted(price)mean_tas (sorted_price[-1] - sorted_price[0]) // (k - 1)ans mean_tasi, j 0 , mean_tasiteration 0while i j:mid ((j - i) 1) i# if mid i:# mid 1if DEBUG:print(i, j, (j-i)1, mid)iteration 1if iteration ITER:print(Error)raise IndexErrortaken []flag Falsefor itr in sorted_price:if DEBUG:print(taken, itr, mid)# if taken:# print(itr - taken[-1] mid, itr - taken[-1])if not taken:taken.append(itr)elif itr - taken[-1] mid:taken.append(itr)if len(taken) k:flag Truebreakif DEBUG:print(flag)if flag:i mid 1else:j mid - 1return j 一个是 w h i l e while while 循环中是 l e f t left left 小于 r i g h t right right 还是小于等于这个需要和
if flag:i mid 1
else:j mid - 1有对应关系 m i d mid mid 不满足时 j m i d − 1 j mid - 1 jmid−1 没有问题但是mid满足时如果 i i i 要等于 m i d 1 mid 1 mid1就会出现 i 54 , j 56 i54, j56 i54,j56 55 55 55 可行从而直接结束的情况。 但是如果不 m i d 1 mid1 mid1 就需要考虑 i 4 , j 5 i4,j5 i4,j5 的情况这种时候求均值的方法就不能向下取整。可以考虑 ( i j 1 ) 1 (i j 1) 1 (ij1)1。