package FreeTime;
import java.util.Arrays;
import java.util.Scanner;
public class HWBS2_2 {
public static void main(String[] args) {
// Scanner in = new Scanner(System.in);
// int m = in.nextInt();
// int[] nums = new int[m];
// for (int i = 0; i < m; i++) {
// nums[i] = in.nextInt();
// }
int x = 100;
int[] nums = new int[]{5, 9, 12, 16, 19};
// int[] nums = new int[]{40, 16, 55, 22, 66, 20, 15};
HWBS2_2 hwbs2_2 = new HWBS2_2();
System.out.println(hwbs2_2.getRes(nums, x));
}
public int getRes(int[] nums, int time) {
Arrays.sort(nums);
if (time == nums.length) {
return nums[time - 1];
}
int r = nums.length;
while (r > 0) {
if (getTime(r, nums) >= time) {
break;
}
r--;
}
if (r > 0 && getTime(r, nums) == time) {
return nums[r - 1];
}
return getTime1(nums, r, time);
}
private int getTime1(int[] nums, int r, int time) {
int left = r - 1 < 0 ? 1 : nums[r - 1];
int right = nums[r];
while (++left < right) {
int res = r;
int t = r;
while (t++ < nums.length) {
res += nums[t - 1] % left == 0 ? nums[t - 1] / left : nums[t - 1] / left + 1;
}
if (res == time) {
return left;
}
}
return right - 1;
}
private int getTime(int r, int[] nums) {
int res = r;
int t = nums[r - 1];
while (r++ < nums.length) {
res += nums[r - 1] % t == 0 ? nums[r - 1] / t : nums[r - 1] / t + 1;
}
return res;
}
}
HW笔试第2题
最新推荐文章于 2025-12-16 14:17:05 发布
该博客主要探讨了一个Java程序,实现了一种基于排序数组的时间复杂度计算方法。通过对不同场景下的时间消耗进行分析,文章揭示了在给定时间限制下如何优化排序算法的选择。此外,还详细介绍了getTime和getTime1两个辅助方法,用于计算数组元素在特定时间内的处理情况。
2万+

被折叠的 条评论
为什么被折叠?



