• 白菜刷LeetCode记-378. Kth Smallest Element in a Sorted Matrix


    简单题真的越来越少了,今天的还是中等难度的题目,不过自己也要改一下自己的心态了,不能因为是中等题就瑟瑟发抖。

    今天的题目如下:

    这道题是要寻找矩阵中第k个小的元素的值,在矩阵中的每一行跟每一列是递增的。

    看到题目是说矩阵中每一行每一列都是递增的,那么应该有一个能够仅仅通过在矩阵上比较大小就可以获取第k个小的值啊。

    结果思考了很久都没有找到方案,在网上找了一下答案,似乎都是用将矩阵转化成其他数据结构再进行处理的方法。好吧,屈服了。

    于是只能用老方法去处理了,思路是:

    1、创建一个Map,遍历矩阵,以矩阵元素的值作为Map的键,元素的值出现次数为Map的值;

    2、将Map导入到一个数组当中,对数组排序,然后算出哪个才是第k小的值。

    代码如下:

    /**
     * @param {number[][]} matrix
     * @param {number} k
     * @return {number}
     */
    var kthSmallest = function(matrix, k) {
        let count = 0, n = matrix.length;
        let myMap = new Map();
        let myArr = new Array();
        
        for(let i = 0 ; i < n ; i++){
            for(let j = 0 ; j < n ; j++){
                if(myMap.has(matrix[i][j])){
                    myMap.set(matrix[i][j], myMap.get(matrix[i][j])+1);
                }else{
                    myMap.set(matrix[i][j],1);
                }
            }
        }
        
        myArr = Array.from(myMap);
        
        myArr.sort((a,b)=>(a[0]-b[0]));
        
        let arridx;
        for(arridx = 0 ; arridx < myArr.length ; arridx++){
            count += myArr[arridx][1];
            if(count >= k){
                break;
            }
        }
        
        return myArr[arridx][0];
    };

    看来没有那么多难题,只要善用自己拥有的知识。

  • 相关阅读:
    web--webstorm的一些常用快捷键
    studio--常见设置
    并发之lock的condition接口
    并发之atomic实例
    并发之volatile底层原理
    并发之java.util.concurrent.atomic原子操作类包
    多线程之整体概括
    Sqlite之事务
    activity--生命周期总结
    网络之TCP握手总结
  • 原文地址:https://www.cnblogs.com/sssysukww/p/9673519.html
Copyright © 2020-2023  润新知