LeetCode378 有序矩陣中第k小的元素

2021-09-26 18:44:38 字數 661 閱讀 9903

題目 

給定乙個 n x n 矩陣,其中每行和每列元素均按公升序排序,找到矩陣中第k小的元素。 

請注意,它是排序後的第k小元素,而不是第k個元素。 

思路 直接求解矩陣中的第8小元素很難,我們可以用二分法設定乙個值mid,檢視mid值是否是矩陣第8小元素。 

具體思路為: 

1.首先設定mid的初值為矩陣matrix,最後乙個數和第乙個數的平均值。 

2.統計矩陣中每一行小於mid值的個數之和。若該值小於8,記錄當前mid,l = mid + 1,並更新mid;若該值大於8,r = mid - 1。 

3.重複上述搜尋,直至l和r不滿足l <= r,此時的mid值即為所求。

時間複雜度為o(nlognlogn)

class solution else 

}sum += ans;

}return k > sum;

}public static int kthsmallest(int matrix, int k) else

}return ans;}}

reference:

leetcode 378 有序矩陣中第K小的元素

給定乙個 n x n 矩陣,其中每行和每列元素均按公升序排序,找到矩陣中第k小的元素。請注意,它是排序後的第k小元素,而不是第k個元素。示例 matrix 1,5,9 10,11,13 12,13,15 k 8,返回 13。說明 你可以假設 k 的值永遠是有效的,1 k n2 class solut...

leetcode 378 有序矩陣中第K小的元素

給定乙個 n x n 矩陣,其中每行和每列元素均按公升序排序,找到矩陣中第k小的元素。請注意,它是排序後的第k小元素,而不是第k個元素。示例 matrix 1,5,9 10,11,13 12,13,15 k 8,返回 13。說明 你可以假設 k 的值永遠是有效的,1 k n2 解題方法 使用優先佇列...

LeetCode 378 有序矩陣中第K小的元素

給定乙個 n x n 矩陣,其中每行和每列元素均按公升序排序,找到矩陣中第k小的元素。請注意,它是排序後的第k小元素,而不是第k個元素。示例 matrix 1,5,9 10,11,13 12,13,15 k 8,返回 13。說明 你可以假設 k 的值永遠是有效的,1 k n2 此題用二分法。給定二維...