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


給定一個 n x n 矩陣,其中每行和每列元素均按升序排序,找到矩陣中第k小的元素。
請注意,它是排序后的第k小元素,而不是第k個元素。

示例:

matrix = [
   [ 1,  5,  9],
   [10, 11, 13],
   [12, 13, 15]
],
k = 8,

返回 13。

說明: 
你可以假設 k 的值永遠是有效的, 1 ≤ k ≤ n2 。

 

解法:

我的第一想法是觀察到該矩陣只是按行或者按列排序的,所以並不是說矩陣就是完全按照大小順序排列的,例如matrix[0][2]>matrix[1][2],,所以要找矩陣中第k小的元素,則直接將該矩陣中的所有元素升序排序即可,我的方法是遍歷該二維矩陣,將其賦值給一個列表,然后將該列表排序后,可直接得出第k小的元素

代碼如下:

class Solution(object):
  def kthSmallest(self, matrix, k):
  """
  :type matrix: List[List[int]]
  :type k: int
  :rtype: int
  """
  list=[]
  for i in range(len(matrix)):
    for j in range(len(matrix[0])):
      list.append(matrix[i][j])
  list.sort()
  return list[k-1]

 

注意點:

1.涉及到二維矩陣的遍歷:

  for i in range(len(matrix)):
    for j in range(len(matrix[0])):

2.涉及到列表的排序:

  list.sort(cmp=None,key=None,reverse=False)

  • cmp -- 可選參數, 如果指定了該參數會使用該參數的方法進行排序。
  • key -- 主要是用來進行比較的元素,只有一個參數,具體的函數的參數就是取自於可迭代對象中,指定可迭代對象中的一個元素來進行排序。
  • reverse -- 排序規則,reverse = True 降序, reverse = False 升序(默認)。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM