Leecode 378 (二分查詢)

2021-09-25 01:30:32 字數 896 閱讀 8657

leecode 378: 有序矩陣中第k小元素

題目描述:給定n*n矩陣,其中每行和每列元素均按公升序排序,找到矩陣中第k小元素,請注意:是排序後的第k小元素

示例示例

matrix = [

[ 1, 5, 9],

[10, 11, 13],

[12, 13, 15]

],k = 8,

返回 13。

解題思路:

暴力解題法:將矩陣中所有的數讀入一維陣列,對這個一維陣列進行排序,取第k個值

二分解法:

由於是乙個矩陣,左上角的數石最小值,右下角的數石最大值(每行和每列按照公升序排列)

每次取兩個邊界的值進行除以2, 得到乙個mid,然後根據這個mid統計整個矩陣中小於mid值的個數,如果小於mid的值的個數剛好大於等於k,,那麼應該縮小right的值到mid,如果小於k個,那麼說明left應該變成mid

暴力演算法`

class solution {

public int kthsmallest(int matrix, int k) {

//暴力解決

if(matrix.length ==0 || matrix[0].length == 0)

return -1;

int rows = matrix.length;

int cols = matrix[0].length;

int number = rows*cols; //統計矩陣中的所有元素個數

int list = new int[number];

int count = 0;

for (int i =0; i二分演算法:

leecode 二分查詢大全

二分查詢大全 class solution def searchrange self,nums list int target int list int if not nums return 1,1 l len nums defzuo nums,target left,right 0,l 1whil...

迭代二分查詢二分查詢

在寫這篇文章之前,已經寫過了幾篇關於改迭代二分查詢主題的文章,想要了解的朋友可以去翻一下之前的文章 bentley在他的著作 writing correct programs 中寫道,90 的計算機專家不能在2小時內寫出完整確正的二分搜尋演算法。難怪有人說,二分查詢道理單簡,甚至小學生都能明確。不過...

LeeCode 1439 暴力 二分

題意 傳送門 1439.有序矩陣中的第 k 個最小陣列和 題解暴力 列舉所有陣列 o n m o n m o nm 考慮到 k kk 值較小,每一次列舉當前行,將子陣列和大小壓縮為 min k,t mp.s ize min k,tmp.size min k,tmp.size 只保留最小的 k kk ...