1class Solution {2public int latestTimeCatchTheBus(int[] buses, int[] passengers, int capacity) {3Arrays.sort(buses);4Arrays.sort(passengers);5HashSet<Integer> set = new HashSet<>();6for (int val : passengers) {7set.add(val);8}9int n = buses.length;10int m = passengers.length;11int solb = capacity; // solb = space on last bus12int lastPerson = 0;13int i = 0, j = 0;14while (i < n && j < m) {15int cc = capacity; // cc => current capacity;16while (j < m && cc > 0 && buses[i] >= passengers[j]) {17cc--;18lastPerson = passengers[j];19j++;20}21i++;22solb = cc;23}24int x = lastPerson;25if (solb > 0 || i != n) {26x = buses[n - 1];27}28while (set.contains(x) == true) {29x--;30}31return x;32}33}