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 個元素時,這個問題會很有幫助。