zoukankan      html  css  js  c++  java
  • 白菜刷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];
    };

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

  • 相关阅读:
    DB9 ------ 接口定义
    以太网 ------ Auto-Negotiation(自动协商)
    Qt ------ 添加某个功能,比如(QSerialPort)注意事项
    Modbus
    Centos7.5 安装JDK1.8 步骤
    Kafka 消息中间件
    使用RabbitMQ实现分布式事务
    RabbitMq的环境安装
    RabbitMQ消息中间件的用法
    基于Docker+Jenkins实现自动化部署
  • 原文地址:https://www.cnblogs.com/sssysukww/p/9673519.html
Copyright © 2011-2022 走看看