Advertisement
Guest User

Untitled

a guest
Mar 20th, 2019
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.26 KB | None | 0 0
  1. import java.util.ArrayList;
  2. import java.util.Arrays;
  3.  
  4. public class Solution {
  5.  
  6. public void insert(ArrayList<Integer> heap, int val){
  7. heap.add(val);
  8. update(heap, heap.size()-1);
  9. }
  10.  
  11. private void update(ArrayList<Integer> heap, int index){
  12. if(index==1){
  13. return;
  14. }
  15. if(heap.get(index)<heap.get(index/2)){
  16. int temp = heap.get(index);
  17. heap.set(index, heap.get(index/2));
  18. heap.set(index/2, temp);
  19. update(heap, index/2);
  20. }
  21. }
  22.  
  23. public void delete(ArrayList<Integer> heap){
  24. if(heap.size()<=1){
  25. return;
  26. }
  27. int temp = heap.get(1);
  28. heap.set(1, heap.get(heap.size()-1));
  29. heap.set(heap.size()-1, temp);
  30. heap.remove(heap.size()-1);
  31. heapify(heap, 1);
  32. }
  33.  
  34. private void heapify(ArrayList<Integer> heap, int index){
  35. if(index>(heap.size()-1)/2){
  36. return;
  37. }
  38. int indexMin;
  39. if(index*2==heap.size()-1){
  40. indexMin = index*2;
  41. }else{
  42. indexMin = heap.get(index*2)<heap.get(index*2+1)?index*2:index*2+1;
  43. }
  44. if(heap.get(index)>heap.get(indexMin)){
  45. int temp = heap.get(index);
  46. heap.set(index, heap.get(indexMin));
  47. heap.set(indexMin, temp);
  48. heapify(heap, indexMin);
  49. }
  50. }
  51.  
  52. public ArrayList<Integer> generateHeap(int[] array){
  53. ArrayList<Integer> heap = new ArrayList<>();
  54. heap.add(-1);
  55. for(int i=0;i<array.length;i++){
  56. insert(heap, array[i]);
  57. }
  58. return heap;
  59. }
  60.  
  61. public ArrayList<Integer> GetLeastNumbers_Solution(int [] input, int k) {
  62. if(k>input.length){
  63. ArrayList<Integer> list = new ArrayList<>();
  64. return list;
  65. }
  66. ArrayList<Integer> heap = generateHeap(input);
  67. ArrayList<Integer> result = new ArrayList<>();
  68. for(int i=0;i<k;i++){
  69. result.add(heap.get(1));
  70. delete(heap);
  71. }
  72. return result;
  73. }
  74.  
  75. public static void main(String[] args) {
  76. Solution solution = new Solution();
  77. int[] array = {4,5,1,6,2,7,3,8};
  78. ArrayList list = solution.GetLeastNumbers_Solution(array, 10);
  79. System.out.println();
  80. }
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement