技术文章和资源

技术文章(时间排序)

热门类别

Python PHP MySQL JDBC Linux

Python - 大于 K 的第 N 个最小值

pythonserver side programmingprogramming

给定的问题陈述需要使用 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 个数字。

示例

# 初始化列表和变量
num_list = [2, 6, 4, 7, 8, 10, 15, 9]
K = 5
N = 3
# 定义函数以获取大于 K 的第 N 个最小值
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]
# 调用上述函数
Output = get_Nth_smallest(num_list, K, N)
# 打印输出
print(f"{N} 大于 {K} 的最小数字是:{Output}")

输出

3 大于 5 的最小数字是: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 - 过滤掉数字后,我们将使用排序后的方法。

  • 步骤 5 − 返回第 (N - 1) 项作为结果。

示例

# 初始化列表和变量
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]
   
# 调用上述函数
Output = get_Nth_smallest(num_list, K, N)
print(f"{N} 大于 {K} 的最小数字是:{Output}")

输出

2 大于 9 的最小数字是:15

结论

我们已经使用 Python 成功实现了查找大于 K 的第 N 个最小数字的解决方案。我们使用非常有效的逻辑来获得所需的结果。当我们需要从大量数据中找到密钥或数据,并且我们不知道第 N 个元素时,这个问题会很有帮助。


相关文章