Python - 大於 K 的第 N 小數


本題要求使用 Python 查詢大於 K 的第 N 小數。我們可以結合迭代和排序技術來查詢所需元素。

理解問題

問題是要使用 Python 查詢大於數字 K 的第 N 小數。基本上,我們需要找到一個大於 K 的數字,並且它是排序列表中從數字 K 開始的第 N 個數字。例如,我們將藉助下圖來理解這種現象:

方法 1:演算法

在這種方法中,我們將構造一個方法,在這個方法中我們將傳遞三個引數:數字列表、值 K 和整數 N。此函式將過濾掉大於 K 的數字,然後將數字按升序排序。然後,函式將檢查過濾後的列表中是否有 N 個數字,如果是,則返回第 N 小的數字。

  • 步驟 1 - 首先初始化數字列表以及 K 和 N 的值。

  • 步驟 2 - 接下來,我們將定義一個函式來查詢應該大於 K 的第 N 小數。將此函式命名為 get_Nth_smallest,並在函式內部傳遞 num_list、K 和 N 作為輸入。

  • 步驟 3 - 現在過濾給定 num_list 中大於 K 的數字。

  • 步驟 4 - 過濾數字後,我們將使用 sorted 方法對剩餘數字進行排序。

  • 步驟 5 - 排序數字後,我們將檢查剩餘數字列表的長度,如果它小於 N,則返回 None。否則,返回排序列表中的第 N 個數字。

示例

# Initialize the list and variables
num_list = [2, 6, 4, 7, 8, 10, 15, 9]
K = 5
N = 3
# Define the function to get Nth smallest greater than K
def get_Nth_smallest(num_list, K, N):
   filter_nums = [num for num in num_list if num > K]
   sorted_num_list = sorted(filter_nums)
   if len(sorted_num_list) < N:
      return None  
   
   return sorted_num_list[N-1]
# Call the above function
Output = get_Nth_smallest(num_list, K, N)
# Print the Output
print(f"{N} smallest number greater than {K} is: {Output}")

輸出

3 smallest number greater than 5 is: 8

複雜度

使用 Python 查詢大於 K 的第 N 小數的時間複雜度為 O(N log N),其中 N 是給定 num_list 中的專案數。在程式碼中,我們過濾了數字,這需要 O(N) 時間。然後我們執行排序操作,這需要 O(N log N) 時間。然後,我們在排序列表中檢查了第 N 小的數字,這需要 O(1) 時間。因此,總時間複雜度為 O(N log N)。

方法 2:演算法

在這種方法中,我們將使用帶 lambda 函式的 filter 方法來獲得所需的結果。

  • 步驟 1 - 首先初始化變數 num_list、K 和 N。

  • 步驟 2 - 定義一個函式來查詢應該大於 K 的第 N 小數,並將此函式命名為 get_Nth_smallest(),並傳遞 num_list、K 和 N 作為輸入。

  • 步驟 3 - 現在使用 filter 和 lambda 函式過濾給定 num_list 中大於 K 的數字。

  • 步驟 4 - 過濾數字後,我們將使用 sorted 方法對剩餘數字進行排序。

  • 步驟 5 - 返回第 (N - 1) 個專案作為結果。

示例

# Initialize the list and variables
num_list = [2, 6, 4, 7, 8, 10, 15, 9]
K = 9
N = 2

# Define the function to get Nth smallest greater than K
def get_Nth_smallest(num_list, K, N):
   result = list(filter(lambda a: a > K, num_list))
   result.sort()
   return result[N-1]
   
# Call the above function
Output = get_Nth_smallest(num_list, K, N)
print(f"{N} smallest number greater than {K} is: {Output}")

輸出

2 smallest number greater than 9 is: 15

結論

我們已經成功地實現了使用 Python 查詢大於 K 的第 N 小數的解決方案。我們使用了非常高效的邏輯來獲得所需的結果。當我們需要從大型資料中查詢鍵或資料,並且不知道第 N 個元素時,這個問題會很有幫助。

更新於:2023年10月17日

81 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告