题目如下:
我的作答:
private class Result{
public int max;
public int main;
}
/**
* 循环给人数最少的的屋子分人
* @param roomCount
* @param visitorCount
* @param nums
* @return
*/
public Result cal(int roomCount,int visitorCount,int [] nums){
Result result=new Result();
nums=sort(nums);
result.max=nums[roomCount-1]+visitorCount;
int max_index=0;
while (visitorCount!=0){
//找到最小值得最大坐标
if (max_index<(roomCount-1) && nums[max_index] == nums[max_index+1]){
max_index++;
continue;
}
//给人数最小的屋分人
for (int i=0;i<=max_index;i++){
if (visitorCount==0){
break;
}
nums[i]=nums[i]+1;
visitorCount--;
}
}
result.main= nums[0]>nums[roomCount-1]?nums[0]:nums[roomCount-1];
return result;
}
//升序排序
public static int[] sort(int[] numbers){
......
}