最佳植树距离

#include <iostream>

#include <algorithm>

#include <vector>

using namespace std;

int minSpace(vector<int>& holes, int target)

{

sort(holes.begin(), holes.end());

int left = 0;

int right = holes.back() - holes.front();

int answer = -1;

while (left <= right)

{

int mid = left + (right - left) / 2;

int count = 1;

int previous = holes[0];

for (int i = 1; i < holes.size(); i++)

{

if (holes[i] - previous >= mid)

{

count++;

previous = holes[i];

if (count >= target)

{

answer = mid;

left = mid + 1;

break;

}

}

}

if (count < target)

{

right = mid - 1;

}

}

return answer;

}

int main()

{

int n;

cin >> n;

vector<int> holes(n);

for (int i = 0; i < n; i++)

{

cin >> holes[i];

}

int target;

cin >> target;

int result = minSpace(holes, target);

cout << result << endl;

return 0;

}

相关推荐
朝朝又沐沐3 小时前
算法竞赛阶段二-数据结构(36)数据结构双向链表模拟实现
开发语言·数据结构·c++·算法·链表
薰衣草23334 小时前
一天两道力扣(6)
算法·leetcode
逝雪Yuki4 小时前
Leetcode——287. 寻找重复数
c++·leetcode·二分查找·双指针·环形链表
剪一朵云爱着4 小时前
力扣946. 验证栈序列
算法·
遇见尚硅谷4 小时前
C语言:*p++与p++有何区别
c语言·开发语言·笔记·学习·算法
天天开心(∩_∩)4 小时前
代码随想录算法训练营第三十二天
算法
YouQian7725 小时前
(AC)缓存系统
算法·缓存
艾莉丝努力练剑5 小时前
【数据结构与算法】数据结构初阶:详解排序(二)——交换排序中的快速排序
c语言·开发语言·数据结构·学习·算法·链表·排序算法
科大饭桶5 小时前
数据结构自学Day13 -- 快速排序--“前后指针法”
数据结构·算法·leetcode·排序算法·c
李永奉5 小时前
C语言-流程控制语句:for循环语句、while和do…while循环语句;
c语言·开发语言·c++·算法