题目描述
分析
初看这道题,找出第k大的元素,一个简单直接的方法就是排序。因为矩阵的每行都是有序的,可以考虑归并排序。这是一种解题思路,有没有其他方法呢?
有,应用二分搜索。我们换个角度来思考这个问题,把问题想象成找出一组数的第k大元素。那我可以对半(随机)找(猜)哇,先来一个值,看小于这个值的数有多少,不够(k-1)的话,那这个值就是设小了,我们放大一点(怎么放大?应用二分搜索的思想)重新数数;反之,若是超过了k个,那就是值设大了,我们缩小一点,再重新数数。
代码实现
int kthSmallest(int** matrix, int matrixRowSize, int matrixColSize, int k) {
int mid,left,