小白,不是很明白,求大佬解答。 大佬,看代码注释。 求解答求求。
import java.util.Scanner;
public class Main {
static int t,n,k;
static int q[] = new int[100001];
static boolean check(int x)
{
if(x <= 0)return false; //这个地方如果改成 return true,题目最后一组数据就会错,为什么呢,求大佬解释
int cnt = 0;
int i = 1,now = q[0];
while(i < n)
{
if(q[i] - now > x)
{
cnt ++;
now += x;
}
else
{
now = q[i];
++ i;
}
}
//System.out.println(cnt);
if(cnt <= k) return true;
else return false;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
t = sc.nextInt();
n = sc.nextInt();
k = sc.nextInt();
for(int i = 0;i < n;i ++) q[i] = sc.nextInt();
int l = 0,r = t;
while(l < r)
{
int mid = (l+r) / 2;
// System.out.println(l + " " + r + " " + mid);
if(check(mid)) r = mid;
else l = mid + 1;
}
System.out.println(l);
}
}