跳至主要内容

378. 有序矩阵中第K小的元素

class Solution {
public:
    int kthSmallest(vector<vector<int>>& matrix, int k) {
        for (int i = 0; i < k-1; i++)
        {
            pop(matrix);
        }
        return matrix[0][0];
    }
   
   
    void swap(std::vector<std::vector<int>>& matrix, int i, int j, int ii, int jj)
    {
        int tmp = matrix[i][j];
        matrix[i][j] = matrix[ii][jj];
        matrix[ii][jj] = tmp;
    }

    void pop(std::vector<std::vector<int>>& matrix)
    {
        int n = matrix.size();

        int i = 0;
        int j = 0;

        matrix[i][j] = INT_MAX;

        while (i < n - 1 || j < n - 1)
        {
            int a = INT_MAX;
            if (i < n - 1)
            {
                a = matrix[i + 1][j];
            }
            int b = INT_MAX;
            if (j < n - 1)
            {
                b = matrix[i][j + 1];
            }

            if (a == b && a == INT_MAX)
            {
                break;
            }

            if (a < b)
            {
                swap(matrix, i, j, i + 1, j);
                i++;
            }
            else
            {
                swap(matrix, i, j, i, j + 1);
                j++;
            }
        }
    }
};

评论

此博客中的热门博文

老毛子路由器无线桥接问题

  信道带宽:改成20M  关闭 DHCP 服务器  关闭动态 (DHCP) 路由 修改IP地址从192.168.123.1到192.168.1.114  无线 AP 工作模式:选择AP-Client+AP 无线 AP-Client 角色:选择LAN bridge 连上上级wifi done 路由器自身可能上不去网,执行: route add default  gw 192.168.1.1 不过这种方式无法翻墙 ////////////////////////////////////////////////////////////// 第二种方式 不改信道不关闭DHCP,保持网段是192.168.123.1 无线 AP 工作模式:选择AP-Client+AP 无线 AP-Client 角色:选择WAN 连上上级wifi done 路由器可以翻墙,但是192.168.1.1的机器访问不了192.168.123.1的机器 解决方法: 在192.168.123.1的机器把想要访问的机器比如192.168.123.100设置DMZ主机,这样就可以访问了,在 192.168.1.1能看到分配的ip比如192.168.1.115