Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.mtk.problems.hackerrank.contest;
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.Collection;
- import java.util.List;
- public class BusStand {
- public static void main(String[] args) {
- // System.out.println(kthPerson(3, Arrays.asList(2,5,3), Arrays.asList(1,5)));
- System.out.println(
- kthPerson(2, Arrays.asList(1, 4, 4, 3, 1, 2, 6), Arrays.asList(1, 2, 3, 4, 5, 6, 7)));
- }
- /*
- * Complete the 'kthPerson' function below.
- *
- * The function is expected to return an INTEGER_ARRAY.
- * The function accepts following parameters:
- * 1. INTEGER k - size of bus
- * 2. INTEGER_ARRAY p - patience array
- * 3. INTEGER_ARRAY q - queries
- *
- * result- last person (kth person) to enter the bus for each query
- */
- public static List<Integer> kthPerson(int k, List<Integer> p, List<Integer> q) {
- List<Integer> ans = new ArrayList<>(q.size());
- int e, ansInt, j, i, pSize = p.size(), maxEle = 0, qMax=0;
- int[] pArr = new int[pSize];
- for(i=0;i<p.size();i++){
- pArr[i]=p.get(i);
- if (pArr[i] > maxEle) {
- maxEle = pArr[i];
- }
- }
- for(i=0;i<q.size();i++){
- j=q.get(i);
- if (j > qMax) {
- qMax = j;
- }
- }
- if(qMax<maxEle){
- maxEle=qMax;
- }
- int[] hash = new int[maxEle + 1];
- for (j = 1; j <= maxEle; j++) {
- e = ansInt = 0;
- for (i = 1; i <= pSize; i++) {
- if (pArr[i-1] >= j) {
- e++;
- }
- if (e == k) {
- ansInt = i;
- break;
- }
- }
- if (ansInt == 0) {
- maxEle = j;
- }
- hash[j] = ansInt;
- }
- for (i=0;i<q.size();i++) {
- j=q.get(i);
- ans.add(j > maxEle ? 0 : hash[j]);
- }
- return ans;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment