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

查找可以通过在Python中删除数组中的元素获得的最大点数

邹嘉石
2023-03-14
本文向大家介绍查找可以通过在Python中删除数组中的元素获得的最大点数,包括了查找可以通过在Python中删除数组中的元素获得的最大点数的使用技巧和注意事项,需要的朋友参考一下

假设我们有一个包含N个元素的数组A,我们还有两个整数l和r,其中1≤ax≤10 ^ 5和1≤l≤r≤N。从数组中取出一个元素说ax并将其删除,从该数组中删除所有等于ax + 1,ax + 2…ax + R和ax-1,ax-2…ax-L的元素。这样做将花费斧头点数。从数组中删除所有元素后,我们必须使总成本最大化。

因此,如果输入类似于A = [2,4,3,10,5],l = 1,r = 2,则输出将为18。

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

  • n:=数组大小

  • max_val:= 0

  • 对于0到n范围内的i,执行

    • max_val:= max_val,数组[i]的最大值

  • count_list:=一个大小为(max_val + 1)的数组,用0填充

  • 对于0到n范围内的i,执行

    • count_list [array [i]]:= count_list [array [i]] + 1

  • res:=一个大小为(max_val + 1)的数组,用0填充

  • res [0]:= 0

  • 左:=左,右的最小值

  • 对于1到max_val + 1范围内的num

    • k:=最大值-左-1,0

    • res [num]:= res [num-1]的最大值,num * count_list [num] + res [k]

  • 返回res [max_val]

示例

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

def get_max_cost(array, left, right) :
   n = len(array)
   max_val = 0
   for i in range(n) :
      max_val = max(max_val, array[i])
   count_list = [0] * (max_val + 1)
   for i in range(n) :
      count_list[array[i]] += 1
   res = [0] * (max_val + 1)
   res[0] = 0
   left = min(left, right)
   for num in range(1, max_val + 1) :
      k = max(num - left - 1, 0)
      res[num] = max(res[num - 1], num * count_list[num] + res[k])
   return res[max_val]
array = [2,4,3,10,5]
left = 1
right = 2
print(get_max_cost(array, left, right))

输入值

[2,4,3,10,5] , 1, 2

输出结果

18
 类似资料:
  • 下面的一些代码似乎太明显了,使用最右边的分支遍历树,因为这是所有最大值所在的位置。然而,我在RobertSedgewick的算法书中看到的这段代码有一些地方我不太懂。 在私有方法中,如果x的右子元素为null,为什么要返回左元素?根据我的理解,如果x没有正确的子节点,并且是我们可以访问的最正确的节点,那么x将是最大值。另外,我不明白什么时候在第二个方法的最后一行返回x。

  • 我有一个数组,如下所示 我需要从数组中删除classId为2或4的元素,预期的结果应该是 我如何做到这一点而不使用一个循环。希望有人能帮助

  • 我想从网站上提取一些赔率: https://www.oddsportal.com/soccer/europe/champions-league-2015-2016/real-madrid-manchester-city-dhjzn1pn/#1x2;2

  • 本文向大家介绍从数据结构中的最大HBLT中删除最大元素,包括了从数据结构中的最大HBLT中删除最大元素的使用技巧和注意事项,需要的朋友参考一下 在Max HBLT中,将根放在根上。如果根被删除,则两个最大的HBLT(即左和右)将分开。通过再次将这两个Max HBLT融合在一起,我们可以将它们合并为一个。因此,在融合之后,所有元素都将存在,除了已删除的元素。

  • 问题内容: 我想删除原始数组(是)中的特定元素。我那个数组,并返回新的数组。但这不会影响此代码中的原始数组。我如何轻松地从原始数组中删除那些元素? 问题答案: 该方法不仅用于收集元素集,而且还用于收集元素集。如果您想通过评估条件来获得一项,那么您还有其他三种选择。,并因此只有当你想对多个项目的操作,你应该考虑使用过滤功能。就需要完成的工作而言,没有一个答案是完整的。他们使用过滤器功能隔离一个集合(

  • 删除数组中的元素,直到传递的函数返回 true 。 返回数组中的其余元素。 循环访问数组,使用 Array.slice() 在数组中从第一个元素开始删除,直到函数的返回值为 true。 返回其余的元素。 const dropElements = (arr, func) => { while (arr.length > 0 && !func(arr[0])) arr = arr.slice(1)

  • 问题内容: 我在MongoDB中有一个文档,其中一个看起来像这样: 在每个文档中,我需要找到最小的项目并将其删除。所以应该是这样的: 看起来应该在这里使用函数,但是我不能再说了。 如何找到数组中的最小元素并将其删除? 我正在使用MongoDB和Pymongo驱动程序。 问题答案: 如果您不限于一步就完成查询,则可以尝试: 步骤1)将聚合函数与$ unwind和$ group运算符配合使用,以查找每