富翁招收保镖
/**
* @author pppppp
* @date 2021/7/20 8:34 耗时 20min
*/
/* 题目:某个富翁招收保镖,为了提高吸引力,设置了一个特殊的工资,
第一天保镖能获取1元报酬,随后两天能获得2元,在随后三天能够获得3元...
以此类推,给定一个天数,得出能够获得的报酬
输入 3, 返回5 1+2+2 = 5
输入 10,返回30 1+2+2+3+3+3+4+4+4+4 = 30
* */
public class DD {
public static void main(String[] args){
int flag = 6;
System.out.println(demo(flag));
}
static int demo(int inNum){
int sum = 0;
for (int i = 1; ; i++) {
if(inNum >= i){
sum += i*i;
}else {
sum = sum+inNum*i;
break;
}
inNum -=i;
}
return sum;
}
}
781. 森林中的兔子
难度 中等
森林中,每个兔子都有颜色。其中一些兔子(可能是全部)告诉你还有多少其他的兔子和自己有相同的颜色。我们将这些回答放在 answers 数组里。
返回森林中兔子的最少数量。
示例: 输入: answers = [1, 1, 2] 输出: 5 解释: 两只回答了 “1” 的兔子可能有相同的颜色,设为红色。 之后回答了 “2” 的兔子不会是红色,否则他们的回答会相互矛盾。 设回答了 “2” 的兔子为蓝色。 此外,森林中还应有另外 2 只蓝色兔子的回答没有包含在数组中。 因此森林中兔子的最少数量是 5: 3 只回答的和 2 只没有回答的。
输入: answers = [10, 10, 10] 输出: 11
输入: answers = [] 输出: 0 说明:
answers 的长度最大为1000。 answers[i] 是在 [0, 999] 范围内的整数。
public static int numRabbits(int[] answers) {
if(answers.length == 0){
return 0;
}
int sum = 0;
//1.对数组进行从大到小的排序
Arrays.sort(answers);
Map<Integer,Integer> map = new HashMap();
//2.将数组变为 map key为 数值 value 为个数
int temp = answers[0];
int value = 1;
map.put(temp, value);
for (int i = 1; i < answers.length; i++) {
if(answers[i] == temp){
value++;
}else {
value = 1;
temp = answers[i];
}
map.put(temp, value);
}
// System.out.println(map);
Set<Integer> set = map.keySet();
for (Integer key : set) {
int tempValue = map.get(key);
/* if(key == 0){
sum += tempValue;
continue;
}*/
if(tempValue<= key+1){
sum += key+ 1;
}else {
int i;
if(tempValue %(key + 1) == 0){
i = tempValue /(key + 1);
}else {
i = tempValue /(key + 1) + 1;
}
sum += (key+ 1) * i;
}
}
System.out.println(sum);
return sum;
}
public static void main(String[] args) {
// int[] answers = {1, 1, 2};
int[] answers = {1,0,1,0,0};
// int[] answers = {4,0,2,2,4};
// int[] answers = {2,1,2,2,2,2,2,2,1,1};
// int[] answers = {0,1,0,2,0,1,0,2,1,1};
// int[] answers = {1, 1, 1,2};
// int []answers = {5,1, 1,1, 2,5,6};
// int []answers = {5,5,5,5,5,5,5};
// int []answers = {10,10,10};
int i = numRabbits(answers);
}
待优化