给定n x n
矩阵,其中每个row
和column
按非递减顺序排序。按排序顺序打印矩阵的所有元素。
示例:
输入:
mat[][] = { {10, 20, 30, 40},
{15, 25, 35, 45},
{27, 29, 37, 48},
{32, 33, 39, 50},
};
输出:
(按排序顺序排列的矩阵元素)
10 15 20 25 27 29 30 32 33 35 37 39 40 45 48 50
我无法弄清楚如何做到这一点。但据我所知,我们可以将二维矩阵放在一个矩阵中并应用排序函数。但我需要空间优化代码。
答案 0 :(得分:0)
使用堆在这里是个好主意。
有关非常类似的问题,请参阅以下内容: http://www.geeksforgeeks.org/kth-smallest-element-in-a-row-wise-and-column-wise-sorted-2d-array-set-1/
认为上面链接中的问题不同,可以使用相同的方法来解决您指定的问题。你不需要在链接解释时循环k次,而是需要访问矩阵中的所有元素,即你应该循环直到堆为空。