tabish527112

meetup

Aug 17th, 2020
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.66 KB | None | 0 0
  1. package com.ie.ng.jobsearch.common.common;
  2.  
  3. import java.util.LinkedList;
  4. import java.util.Queue;
  5. import javax.persistence.criteria.CriteriaBuilder.In;
  6.  
  7. public class Test {
  8.  
  9.   public static void main(String[] args) {
  10. //    int[] start = {1,2,1,2,2};
  11. //    int[] end = {3,2,1,3,3};
  12.     int[] start = {1,8,8};
  13.     int[] end = {1,8,8};
  14.     int ans = new Test().meetup(start,end);
  15.     System.out.println(ans);
  16.   }
  17.  
  18.   public int meetup(int[] start, int[] end){
  19.     int n = start.length;
  20.     int[][] arr = new int[n*2][2];
  21.     int i=0;
  22.     for(int j=0;j<n;j++){
  23.       arr[i][0]=start[j];
  24.       arr[i][1]=0;
  25. //      arr[i][2]=end[j];
  26.       i++;
  27.     }
  28.     for(int j=0;j<n;j++){
  29.       arr[i][0]=end[j];
  30.       arr[i][1]=1;
  31. //      arr[i][2]=start[j];
  32.       i++;
  33.     }
  34. //    System.out.println(arr);
  35.     sort(arr,0,n*2-1);
  36. //    System.out.println(arr);
  37.  
  38.     int min = arr[0][0];
  39.     int ans=0;
  40.     Queue<Integer> queue = new LinkedList<>();
  41.  
  42.     for(i=0;i<arr.length;i++){
  43.       if(arr[i][1]==1){
  44.         if(min<queue.peek()){
  45.           min=queue.peek();
  46.         }
  47.         queue.remove();
  48.         //is end ele
  49.         if(min>arr[i][0]) {
  50.           continue;
  51.         }else{
  52.           min++;
  53.           ans++;
  54.         }
  55.       }
  56.       else{
  57.         //is start ele
  58.         queue.add(arr[i][0]);
  59.       }
  60.     }
  61.  
  62.  
  63.     return ans;
  64.   }
  65.  
  66.   void merge(int arr[][], int l, int m, int r)
  67.   {
  68.     int n1 = m - l + 1;
  69.     int n2 = r - m;
  70.     int L[][] = new int[n1][2];
  71.     int R[][] = new int[n2][2];
  72.     for (int i = 0; i < n1; ++i) {
  73.       L[i][0] = arr[l + i][0];
  74.       L[i][1] = arr[l + i][1];
  75. //      L[i][2] = arr[l + i][2];
  76.     }
  77.     for (int j = 0; j < n2; ++j) {
  78.       R[j][0] = arr[m + 1 + j][0];
  79.       R[j][1] = arr[m + 1 + j][1];
  80. //      R[j][2] = arr[m + 1 + j][2];
  81.     }
  82.  
  83.     int i = 0, j = 0;
  84.     int k = l;
  85.     while (i < n1 && j < n2) {
  86.       if (L[i][0] < R[j][0] || L[i][0] == R[j][0] && L[i][1] < R[j][1]) {
  87.         arr[k][0] = L[i][0];
  88.         arr[k][1] = L[i][1];
  89. //        arr[k][2] = L[i][2];
  90.         i++;
  91.       }
  92.       else {
  93.         arr[k][0] = R[j][0];
  94.         arr[k][1] = R[j][1];
  95. //        arr[k][2] = R[j][2];
  96.         j++;
  97.       }
  98.       k++;
  99.     }
  100.     while (i < n1) {
  101.       arr[k][0] = L[i][0];
  102.       arr[k][1] = L[i][1];
  103. //      arr[k][2] = L[i][2];
  104.       i++;
  105.       k++;
  106.     }
  107.  
  108.     while (j < n2) {
  109.       arr[k][0] = R[j][0];
  110.       arr[k][1] = R[j][1];
  111. //      arr[k][2] = R[j][2];
  112.       j++;
  113.       k++;
  114.     }
  115.   }
  116.  
  117.   void sort(int arr[][], int l, int r)
  118.   {
  119.     if (l < r) {
  120.       int m = (l + r) / 2;
  121.       sort(arr, l, m);
  122.       sort(arr, m + 1, r);
  123.       merge(arr, l, m, r);
  124.     }
  125.   }
  126.  
  127. }
  128.  
Advertisement
Add Comment
Please, Sign In to add comment