You are viewing a single comment's thread. Return to all comments →
My solution in Java 8:
class ClimbingLeaderboardResult { static Integer searchRanking(List<Integer> ranked, Integer score, int left, int right) { int mid = (left+right)/2; if (left >= right || ranked.get(mid).equals(score)) { if (ranked.get(mid) <= score) return mid; if (ranked.get(mid) > score) return mid+1; } return ( ranked.get(mid) < score ? searchRanking(ranked, score, left, mid-1) : searchRanking(ranked, score, mid+1, right) ); } public static List<Integer> climbingLeaderboard(List<Integer> ranked, List<Integer> player) { List<Integer> board = new ArrayList<>(); ranked = ranked.stream() .distinct() .collect(Collectors.toList()); for (Integer playerScore: player) { int playerRank = searchRanking(ranked, playerScore, 0, ranked.size()-1); board.add(playerRank+1); } return board; } }
Seems like cookies are disabled on this browser, please enable them to open this website
Climbing the Leaderboard
You are viewing a single comment's thread. Return to all comments →
My solution in Java 8: