当前位置: 首页 > 编程笔记 >

程序以查找Python中任意数字及其下一个较小数字的最大差

彭风华
2023-03-14
本文向大家介绍程序以查找Python中任意数字及其下一个较小数字的最大差,包括了程序以查找Python中任意数字及其下一个较小数字的最大差的使用技巧和注意事项,需要的朋友参考一下

假设我们有一个称为nums的数字列表,我们必须找到任何数字与下一个较小数字之间存在的最大差。我们的目标是在线性时间内解决这个问题。

因此,如果输入类似于nums = [14、2、6、35、12],则输出将为21,因为35和14的最大差值为21。

为了解决这个问题,我们将遵循以下步骤-

  • max_val:=最大值,min_val:=最小值

  • 如果max_val与min_val相同,则

    • 返回0

  • delta:=(max_val − min_val)/(nums − 1的大小)

  • min_map:=一个空的映射(如果某些值不存在,则返回值为inf)

  • max_map:=一个空映射(如果某些值不存在,则返回值为-inf)

  • res:= 0,idx:= 0

  • 对于nums中的每个num,执行

    • idx:=(((num − min_val)/ delta)的下限

    • max_map [idx]:= max_map [idx]和num的最大值

    • min_map [idx]:= min_map [idx]和num的最小值

  • prev:= min_val

  • 对于0到nums-1范围内的i

    • res:= res的最大值和(min_map [i] −上一页)

    • 上一个:= max_map [i]

    • 如果min_map [i]与inf不同,则

  • 返回res

让我们看下面的实现以更好地理解-

示例

from collections import defaultdict
import math
class Solution:
   def solve(self, nums):
      max_val = max(nums)
      min_val = min(nums)
      if max_val == min_val:
         return 0
      delta = (max_val − min_val) / (len(nums) − 1)
      min_map = defaultdict(lambda: float("inf"))
      max_map = defaultdict(lambda: float("−inf"))
      res = 0
      idx = 0
      for num in nums:
         idx = math.floor((num − min_val) / delta)
         max_map[idx] = max(max_map[idx], num)
         min_map[idx] = min(min_map[idx], num)
      prev = min_val
      for i in range(len(nums)):
         if min_map[i] != float("inf"):
            res = max(res, min_map[i] − prev)
            prev = max_map[i]
      return res
ob = Solution()
nums = [14, 2, 6, 35, 12]
print(ob.solve(nums))

输入值

[14, 2, 6, 35, 12]

输出结果

21
 类似资料:
  • 问题内容: 我希望能够在数字数组中找到最接近的较小值。例如,如果我有: 我正在寻找小于以下值的最接近值: 该函数将返回: 另外,如果我传递的数字大于数组中的最大值,则它应返回最大值。如果我传递的数字小于最小值,则应返回nil。 我尝试使用数组上的函数执行此操作,但是单独执行此操作不会产生我想要的结果,因为我需要这样的东西: 但不幸的是,这是无效的。有什么建议?我知道可以使用while循环轻松完成此

  • 我试图在我的Java项目中找到一个数据结构。我试图做的是从一组数字中获得低于任意数字的下一个最大值,或者如果不存在这样的数字,则得到通知。 例1)我的任意数字是7.0。{3.1, 6.0, 7.13131313, 8.0}我需要从这个集合中得到的数字是6.0。 例2)我的任意数字是1.0。{2.0, 3.5555, 999.0}集合中不存在下一个最高的数字,所以我需要知道它不存在。 我能想到的最好

  • 本文向大家介绍C#程序查找三个数字中的最大值,包括了C#程序查找三个数字中的最大值的使用技巧和注意事项,需要的朋友参考一下 首先,让我们设置三个数字- 现在检查第一个数字和第二个数字。如果num1> num2,则用num3检查num1。如果num1大于num3,则表示最大数量为num1。 示例 您可以尝试运行以下代码来查找三个数字的最大值。 输出结果

  • 问题内容: 我在此站点上找到此代码以查找第二大数字: 是否可以修改此代码以找到第二个 最小的 数字?所以举个例子 问题答案: 确实可以修改该函数以找到第二个最小的函数: 旧版本依赖于Python 2实施细节,该细节始终排在其他任何东西之前(因此测试为“较小”);我取代了使用作为前哨,为无穷大总是测试, 更大的 比任何其它号码。理想情况下,应该使用原始函数代替原始函数,以免与其他Python实现可能

  • 本文向大家介绍Java程序最多查找三个数字,包括了Java程序最多查找三个数字的使用技巧和注意事项,需要的朋友参考一下 可以使用if else语句找到三个数字中的最大值。演示该程序的程序如下。 示例 输出结果 现在让我们了解上面的程序。 首先,定义三个数字。如果num1大于num2和num3,则为最大数。如果num2大于num1和num3,则为最大数。否则,num3是最大数目。演示此过程的代码段如

  • 我找到了关于如何计算neo4j数据库大小的以下信息:https://neo4j.com/developer/guide-sizing-and-hardware-calculator/#_disk_storage