美文网首页
找到行列有序矩阵第K大的值

找到行列有序矩阵第K大的值

作者: gpfworld | 来源:发表于2019-05-05 16:19 被阅读0次

问题描述

给定一个矩阵,矩阵的各行和各列都是递增的,找出第k大的元素。
例如:
1,2,8,9
2,4,9,12
4,7,10,13
6,8,11,15

Code

#include <iostream>
using namespace std;
#define INT_MAX 65535
#include <vector>

int findKthValue(vector<vector<int> > & a , int rows ,int cols, int k ){
    int i ,j;
    int min = a[0][0];
    int minOfRows[rows];

    for(i = 0; i < rows; i++)
        minOfRows[i] = 0;

    //记录寻找过程中,各行最小值的所在列
    minOfRows[0] = 1;

    int r;
    //找k个数
    for(i = 1; i < k; i++)
    {
        min = INT_MAX;
        //找到最小值所在的行,每次执行都能找到一个最小值,并且记录最小值所在行
        for(j = 0; j < rows; j++)
        {
            if (minOfRows[j] < cols)
            {
                if(a[j][minOfRows[j]] < min)
                {
                    min = a[j][minOfRows[j]];
                    r = j;
                }
            }
        }
        minOfRows[r]++;  //最小值在该行,下次访问时从下一值开始
    }
    return min;
}
int main()
{
    int rows = 4;
    int cols = 4;
    vector<vector<int>> a = {{1,2,8,9},{2,4,9,12},{4,7,10,13},{6,8,11,15}};//按行初始化

    int k = 10;
    int kth = findKthValue( a , rows, cols,k);

    cout<<kth<<endl;
}

心得

剑指offer上有个类似的题,03题,是在行列有序的矩阵中,查找是否存在某个数。
虽然背景相似,但是问题却是不同的问题。

相关文章

  • 找到行列有序矩阵第K大的值

    问题描述 给定一个矩阵,矩阵的各行和各列都是递增的,找出第k大的元素。例如:1,2,8,92,4,9,124,7,...

  • 2019-04-23 行列式的转置的行列式的值 等于 行列式的值

    一、矩阵的转置的行列式 等于 矩阵的行列式 : 首先矩阵的值是根据 逆序数 + 排列组合进行定义的 参考同济大学第...

  • 特征值、特征向量

    定义特征值、特征向量.PNG 相似矩阵具有相同的特征值相似矩阵特征值.PNG 相似矩阵具有相同的行列式相似矩阵行列...

  • 由行列构成的矩阵转化为矩阵的形式

    行列构成的矩阵(稀疏矩阵) 即是矩阵由3列构成,矩阵的行号,矩阵的列号,矩阵的值,值为0的部分省略。比如:下面矩阵...

  • Pytorch之线性代数

    矩阵 矩阵初始化 矩阵元素运算 矩阵的乘法 矩阵的转置 矩阵对应列行的最大值,最小值,和 矩阵的其他操作:行列数、...

  • 线性代数笔记18

    行列式 与 特征值 行列式 行列式为零 矩阵是奇异的行列式不为零 矩阵是可逆的但是行列式的意义不止这点 交换行 会...

  • 12 - Hard - Kth Smallest Elemen

    给定一个 n x n 矩阵,其中每行和每列元素均按升序排序,找到矩阵中第k小的元素。请注意,它是排序后的第k小元素...

  • 有序矩阵中第K小的元素

    给定一个 n x n 矩阵,其中每行和每列元素均按升序排序,找到矩阵中第k小的元素。请注意,它是排序后的第k小元素...

  • 算法: reshape the matrix

    reshape the matrix// 找到对应新矩阵和原来矩阵行列的关系以及对应的变换//

  • 查找问题

    1.有序数列的查找 完全写对也不容易,注意循环条件,输入的数列是从小到大的有序序列 2.行列递增矩阵中的元素查找 ...

网友评论

      本文标题:找到行列有序矩阵第K大的值

      本文链接:https://www.haomeiwen.com/subject/mtzbgqtx.html