題目:
給定乙個 n x n 矩陣,其中每行和每列元素均按公升序排序,找到矩陣中第k小的元素。
請注意,它是排序後的第 k 小元素,而不是第 k 個不同的元素。
示例:matrix = [
[ 1, 5, 9],
[10, 11, 13],
[12, 13, 15]
],k = 8,
返回 13。
1.找出二維矩陣中最小的數left,最大的數right,那麼第k小的數必定在left~right之間
2.mid=(left+right) / 2;在二維矩陣中尋找小於等於mid的元素個數count
3.若這個count小於k,表明第k小的數在右半部分且不包含mid,即left=mid+1, right=right,又保證了第k小的數在left~right之間
4.若這個count大於k,表明第k小的數在左半部分且可能包含mid,即left=left, right=mid,又保證了第k小的數在left~right之間
5.因為每次迴圈中都保證了第k小的數在left~right之間,當left==right時,第k小的數即被找出,等於right
注意:這裡的left mid right是數值,不是索引位置。
**:
class solution else
}return right;
}private int findnotbiggerthanmid(int matrix, int mid, int row, int col) else
}return count;
}}
每日一題 LeetCode
在陣列中的兩個數字,如果前面乙個數字大於後面的數字,則這兩個數字組成乙個逆序對。輸入乙個陣列,求出這個陣列中的逆序對的總數。示例 1 輸入 7,5,6,4 輸出 5 限制 0 陣列長度 50000 思想是 分治演算法 所有的 逆序對 於 3 個部分 左邊區間的逆序對 右邊區間的逆序對 橫跨兩個區間的...
LeetCode每日一題(題1028)
最近在刷leetcode每日一題,每次做完之後總能有些收穫,所以想著不如每天寫個部落格記錄一下做的題目的解法以及自己寫的時候問題出在 從先序遍歷還原二叉樹 題目大意 給出乙個字串 1 2 3 4 5 6 7 1代表節點的值,前面的 個數代表節點的深度。如果只有乙個子節點,保證這個節點為左子節點。返回...
LeetCode每日一題(題139)
題目 題目大意 給出乙個字串s和乙個字串陣列words,判斷s是否能夠拆分成多個words中的字串。分析 這道題比較簡單的方式應該是採用動態規劃來做。對於任意乙個字串中的區間,可以判斷該區間組成的字串是否在字典中,如果是,則這個區間的真假取決於前面那個區間的真假。給出狀態轉移方程dp i dp j ...