弄一个网站多少钱,如何网站建设平台,文创产品营销方案,狼雨seo教程的网上店铺本题我讲二分法#xff1a; 此题我认为最大的问题是看不懂题目意思#xff1a; 注意此题 p 是给的下标对的个数#xff0c;若为1#xff0c;则找2个下标#xff0c;为2#xff0c;则找2个下标对#xff0c;再求这两个下标对中差值最小的那个差值
而这个最大差值的最小值…本题我讲二分法 此题我认为最大的问题是看不懂题目意思 注意此题 p 是给的下标对的个数若为1则找2个下标为2则找2个下标对再求这两个下标对中差值最小的那个差值
而这个最大差值的最小值是啥意思呢
是这个给的数组里面最大的那个数和最小的那个数相减的绝对值叫做最大差值
而最小值是什么意思是找这给的这么多对里面的最小的那个差值 对于解法
1先假设定义最小差值为0因为是绝对值最大为整理后的最后一个数减开头一个数
2之后就要不断二分缩小范围更新最小差值left和最大差值right
3条件有限制要满足p对所以要额外加条件 代码如下
解释在下方 while 循环使得中间每个差值都能得到遍历里面定义中间值传入mid到相应函数若此中间差值满足里面有p对下标且其最大差值都小于这个中间差值则返回真之后使右边最大差值缩放为中间差值减一因为为左右闭区间二分右边封闭若不满足则可用说明里面的此时的最大差值为上一次循环的mid已经缩放到了最小或者是里面p对的对数小于p则使得下一次的mid往相对于此次mid再往右偏移一半再去找下一次循环p的对数肯定会增加且下一次mid肯定会比次层mid的值更大从而不断缩放缩放直到左边差值大于右边差值说明将所有差值遍历完毕直到找到最小的left返回