tabish527112

BusStand

Aug 20th, 2020
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.79 KB | None | 0 0
  1. package com.mtk.problems.hackerrank.contest;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.Arrays;
  5. import java.util.Collection;
  6. import java.util.List;
  7.  
  8. public class BusStand {
  9.  
  10.   public static void main(String[] args) {
  11. //    System.out.println(kthPerson(3, Arrays.asList(2,5,3), Arrays.asList(1,5)));
  12.     System.out.println(
  13.         kthPerson(2, Arrays.asList(1, 4, 4, 3, 1, 2, 6), Arrays.asList(1, 2, 3, 4, 5, 6, 7)));
  14.   }
  15.  
  16.   /*
  17.    * Complete the 'kthPerson' function below.
  18.    *
  19.    * The function is expected to return an INTEGER_ARRAY.
  20.    * The function accepts following parameters:
  21.    *  1. INTEGER k - size of bus
  22.    *  2. INTEGER_ARRAY p - patience array
  23.    *  3. INTEGER_ARRAY q - queries
  24.    *
  25.    * result- last person (kth person) to enter the bus for each query
  26.    */
  27.  
  28.   public static List<Integer> kthPerson(int k, List<Integer> p, List<Integer> q) {
  29.     List<Integer> ans = new ArrayList<>(q.size());
  30.     int e, ansInt, j, i, pSize = p.size(), maxEle = 0, qMax=0;
  31.     int[] pArr = new int[pSize];
  32.  
  33.     for(i=0;i<p.size();i++){
  34.       pArr[i]=p.get(i);
  35.       if (pArr[i] > maxEle) {
  36.         maxEle = pArr[i];
  37.       }
  38.     }
  39.  
  40.     for(i=0;i<q.size();i++){
  41.       j=q.get(i);
  42.       if (j > qMax) {
  43.         qMax = j;
  44.       }
  45.     }
  46.  
  47.     if(qMax<maxEle){
  48.       maxEle=qMax;
  49.     }
  50.  
  51.     int[] hash = new int[maxEle + 1];
  52.     for (j = 1; j <= maxEle; j++) {
  53.       e = ansInt = 0;
  54.       for (i = 1; i <= pSize; i++) {
  55.         if (pArr[i-1] >= j) {
  56.           e++;
  57.         }
  58.         if (e == k) {
  59.           ansInt = i;
  60.           break;
  61.         }
  62.       }
  63.       if (ansInt == 0) {
  64.         maxEle = j;
  65.       }
  66.       hash[j] = ansInt;
  67.     }
  68.  
  69.     for (i=0;i<q.size();i++) {
  70.       j=q.get(i);
  71.       ans.add(j > maxEle ? 0 : hash[j]);
  72.     }
  73.  
  74.     return ans;
  75.   }
  76. }
  77.  
Advertisement
Add Comment
Please, Sign In to add comment