Twitter Interview Question
InternsCountry: United States
import java.util.*;
public class Test1{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
System.out.println("Length: ");
int len = in.nextInt();
int[] a = new int[len];
for(int i = 0; i<len; i++){
System.out.println("Element " + i + ": ");
a[i] = in.nextInt();
}
System.out.println("Max sum: ");
System.out.println(maximumLength(a,in.nextInt()));
}
public static int maximumLength(int[]a, int k){
PriorityQueue<Integer> heap = new PriorityQueue<Integer>();
for(int item: a){
heap.add(item);
}
int sum = 0;
int numElements = 0;
while(sum <= k && !heap.isEmpty()){
int item = heap.poll();
System.out.println("Polled " + item);
if(sum + item <= k){
sum+= item;
numElements++;
}
else{
break;
}
}
return numElements;
}
}
I assume by "less than k value" you mean "less than or equal", due to your given outputs.
Anyways, here goes:
- Spooperoni October 11, 2016