小红拿到了一个数组,她每次可以选择一个数使其加。小红希望数组中的每个数都和其它元素不同,她想知道最小的操作次数是多少?
区块链毕设网qklbishe.com为您提供问题的解答
小红拿到了一个数组,她每次可以选择一个数使其加。小红希望数组中的每个数都和其它元素不同,她想知道最小的操作次数是多少?
import java.util.*;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.HashMap;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
Long n = in.nextLong();
Long k = in.nextLong();
Map<Long, Integer> map = new HashMap<>();
for (int i = 0; i < n; i++) {
Long a = in.nextLong();
map.put(a, map.getOrDefault(a, 0) + 1);
}
Set<Long> add = new HashSet<>();
Long res = 0L;
for(Map.Entry<Long,Integer> entries:map.entrySet()){
Long key = entries.getKey();
int value = entries.getValue();
while(value > 1){
Long temp = key+(value-1) * k;
res += value – 1;
while(map.containsKey(temp)){
res++;
temp += k;
}
while(add.contains(temp)){
res++;
temp += k;
}
add.add(temp);
value–;
}
}
System.out.print(res);
}
}
//笨办法
31:20
以上就是关于问题小红拿到了一个数组,她每次可以选择一个数使其加。小红希望数组中的每个数都和其它元素不同,她想知道最小的操作次数是多少?的答案
欢迎关注区块链毕设网-
专业区块链毕业设计成品源码,定制。
区块链NFT链游项目方科学家脚本开发培训