2022-07-14 08:07
南方科技大学 算法工程师 隰有扶苏:第二题用优先级队列 因为没有参加笔试 我是按照评论区的题目写的
public int process(int x , int n , int[] nums){
if (x<n){
return 0;
}
if (x==n){
return n*2;
}
PriorityQueue<Integer> heap = new PriorityQueue<>();
for (int num : nums) {
heap.add(num);
}
while (heap.size()!=n){
int num = 0;
while (heap.size()>=0&;&;num<heap.peek()){
if (heap.size()==n-1){
break;
}
num+=heap.poll();
}
heap.add(num);
}
HashMap<Integer, Integer> map = new HashMap<>();
while (!heap.isEmpty()){
Integer poll = heap.poll();
map.put(poll,map.getOrDefault(poll,0)+1);
}
int ans = 0;
for (Integer key : map.keySet()) {
if (map.get(key)==1){
ans++;
}
}
return n*2+ans;
}
投递华为等公司10个岗位 >
0 点赞 评论 收藏
分享
关注他的用户也关注了: