Sort by

recency

|

2391 Discussions

|

  • + 0 comments

    I guess in Java the ranked input is not always sorted correctly. Tried it multiple ways and always failed. As soon as I sorted "ranked" manually and didnt count on it to be sorted I passed.

  • + 0 comments

    TypeScript:

    function climbingLeaderboard(ranked: number[], player: number[]): number[] {
      const rankings: number[] = [];
      const distinct: number[] = Array.from(new Set(ranked));
    
      player.forEach((score) => {   
        if (score < distinct[distinct.length - 1]) {
          rankings.push(distinct.length + 1);
        } else {
          for (let i = 0; i < distinct.length; i++) {
            if (score >= distinct[i]) {
              rankings.push(i + 1);
    
              break;
            }
          };
        }
      });
    
      return rankings;
    }
    
  • + 0 comments

    O(n+m) python solution

    def climbingLeaderboard(ranked, player):
        r2 = sorted(set(ranked))[::-1]
        i, res = 0, []
        for score in player[::-1]:
            while i < len(r2) and score < r2[i]: i += 1
            res.append(i+1)
    
        return res[::-1]
    
  • + 0 comments

    I finally wrote a code faster, better and more destructive than the AI chatbot generated. Have a look. Python. But it is so simple you can transplant it to anything.

    def climbingLeaderboard(ranked, player):

    ranked = sorted(list(set(ranked)), reverse=True)
    ans = []
    
    for p in player:
    
        while len(ranked) > 0 and ranked[-1] < p:
            ranked.pop()
    
        if len(ranked) == 0:
            ans.append(1)
        elif ranked[-1] == p:
            ans.append(len(ranked))
        else:
            ans.append(len(ranked)+1)
    
    return ans
    
  • + 0 comments

    vector result; size_t r_ind = 0; int place = 0; result.resize(player.size());

    for (size_t p_ind = player.size(); p_ind-- > 0;) {
        int old_ranked = -1;
        while (r_ind < ranked.size() && ranked[r_ind] > player[p_ind]) {
            if (old_ranked != ranked[r_ind]) {
                place++;
            }
            old_ranked = ranked[r_ind];
            r_ind++;
        }
        result[p_ind]= place + 1;
    }
    return result;