当前位置: 首页 > news >正文

二分法的边界条件 2517. 礼盒的最大甜蜜度

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 j=mid1 没有问题,但是mid满足时如果 i i i 要等于 m i d + 1 mid + 1 mid+1,就会出现 i = 54 , j = 56 i=54, j=56 i=54,j=56 55 55 55 可行从而直接结束的情况。
但是如果不 m i d + 1 mid+1 mid+1 就需要考虑 i = 4 , j = 5 i=4,j=5 i=4,j=5 的情况,这种时候求均值的方法就不能向下取整。可以考虑 ( i + j + 1 ) > > 1 (i + j + 1) >> 1 (i+j+1)>>1

http://www.lryc.cn/news/91837.html

相关文章:

  • java设计模式(十六)命令模式
  • [运维] iptables限制指定ip访问指定端口和只允许指定ip访问指定端口
  • JS学习笔记(3. 流程控制)
  • 遥感云大数据在灾害、水体与湿地领域典型案例及GPT模型教程
  • 什么是文件描述符以及重定向的本质和软硬链接(Linux)
  • LVM逻辑卷元数据丢失恢复案例 —— 筑梦之路
  • Java技术规范概览
  • 【OpenMMLab AI实战营第二期】二十分钟入门OpenMMLab笔记
  • docker-compose单机容器集群编排
  • CentOS7 安装Gitlab
  • Mysql InnoDB的Buffer Pool
  • SMTP简单邮件传输协议(C/C++ 发送电子邮件)
  • uploads靶场通关(1-11关)
  • 6.1黄金探底回升是否到顶,今日多空如何布局
  • 自定义ViewGroup实现流式布局
  • Git版本控制
  • 若依之权限处理
  • 华为OD机试真题 Java 实现【矩阵最大值】【2023 B卷 100分】,附详细解题思路
  • ModuleNotFoundError: No module named ‘transformers_modules.chatglm-6b_v1‘的解决方案
  • MMPretrain代码课
  • Selenium自动化程序被检测为爬虫,怎么屏蔽和绕过
  • Nvidia Jetson Orin:开发技巧
  • 为什么需要 git 和 相关的小知识
  • (详解)vue中实现主题切换的三种方式
  • 英国皇家植物园采用机器学习预测植物抗疟性,将准确率从 0.46 提升至 0.67
  • 基于Locust实现MQTT协议服务的压测脚本
  • AURIX TC3XX Cached PFLASH与Non-Cached PFLASH的区别
  • uniapp开发小程序-显示左滑删除效果
  • FPGA 的数字信号处理:Verilog 实现简单的 FIR 滤波器
  • 使用粒子群优化算法(PSO)辨识锂电池二阶RC模型参数(附MATLAB代码)