You are viewing a single comment's thread. Return to all comments →
C# version with binary search:
public static int FindRankBinary(List<int> data, int value) { var left = 0; var right = data.Count - 1; while (left < right) { var mid = Convert.ToInt32(Math.Ceiling((right - left) / (decimal)2) + left); if (data[mid] == value) { return mid; } if (mid == right) { return data[mid] < value ? mid : mid + 1; } if (data[mid] > value) { left = mid; } else { right = mid; } } return data.Count; } public static List<int> climbingLeaderboard(List<int> ranked, List<int> player) { var result = new List<int>(); var rankedDeduplicated = new List<int>(); var rank = 0; rankedDeduplicated.Add(ranked[0]); for (var i = 1; i < ranked.Count; i++) { if (ranked[i] != ranked[i-1]) { rank++; rankedDeduplicated.Add(ranked[i]); } } for (var j = 0; j < player.Count; j++) { if (player[j] >= ranked[0]) { result.Add(1); continue; } result.Add(FindRankBinary(rankedDeduplicated, player[j]) + 1); } return result; }
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 →
C# version with binary search: