假设我们有一个包含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运算符配合使用,以查找每