zoukankan      html  css  js  c++  java
  • LeetCode506-相对名次

    就是一个数组里面,有很多个不重复的数字(成绩),将他们的成绩映射为他们的排名。

    第一名就金牌,后面的4、5、6名这些就输出相对的排名就好了。

    有个问题,数字不是连续的。

    其实一开始也没想到什么好的方法

    怎样才能做到,知道每个数字的名次,又不搞乱顺序呢?因为结果是要返回一个和成绩对应名次的数组。

    1、创建一个副本来保存这些成绩。

    2、排序

    3、用一个map来保存,成绩和对应的名次

    4、最后遍历成绩数组,找到当前成绩对应的名次,push到结果数组里面即可。

    /**
     * @param {number[]} nums
     * @return {string[]}
     */
    var findRelativeRanks = function(nums) {
        
        var temp = [];
        
        // 副本,用于排序
        for(let item of nums){
            temp.push(item);
        }
        
        // 默认是升序的,这里需要降序
        temp.sort((x,y)=>(y - x));
        
        var map = new Map();
        
        // 保存成绩和对应排名
        for(let index = 0;index<temp.length;index++){
            map.set(temp[index],index);
        }
        
        var result = [];
        
        for(let item of nums){
            // 去map里面看排名
            let range = map.get(item);
            if(range==0){
                result.push("Gold Medal");
            }else if(range==1){
                result.push("Silver Medal");
            }else if(range==2){
                result.push("Bronze Medal");
            }else{
                result.push((range+1).toString())
            }
        }
        
        return result;
        
        
    };

    还行啊!

  • 相关阅读:
    序列操作
    上帝造题的七分钟2 / 花神游历各国
    火柴排队
    pair(对组)用法
    线段树
    链上分治
    Rem与Px的转换
    css中单位px和em,rem的区别
    css网页自适应-1
    css网页自适应-2
  • 原文地址:https://www.cnblogs.com/weizhibin1996/p/9971978.html
Copyright © 2011-2022 走看看