LeeCode-刷题日记-Day34

451. 根据字符出现频率排序

思路:将所有字符与出现次数绑定到哈希表,再将哈希表按出现次数排序

最后,按顺序将其放入字符串中

/**
 * @param {string} s
 * @return {string}
 */
var frequencySort = function(s) {
    let res=new Map();
    for(let i=0;i<s.length;i++){
        res.set(s[i],res.has(s[i])?res.get(s[i])+1:1);
    }
    let arr=Array.from(res).sort((a,b)=>{return b[1]-a[1]});
    let r='';
    for(let i of arr){
        for(let j=0;j<i[1];j++){
            r+=i[0];
        }
    }
    return r;
};

973. 最接近原点的 K 个点

思路:将每个点的距离与节点绑定,再按照距离进行升序排序。

最后将前k个节点放入结果数组中。

/**
 * @param {number[][]} points
 * @param {number} k
 * @return {number[][]}
 */
var kClosest = function(points, k) {
    let map=new Map()
    for(let num of points){
        let dis=Math.sqrt(Math.pow(num[0],2)+Math.pow(num[1],2));
        map.set(num,dis);
    }
    let arr=Array.from(map).sort((a,b)=>{return a[1]-b[1]});
    let res=[];
    for(let i=0;i<k;i++){
        res.push(arr[i][0])
    }
    return res;
};