当前位置: 首页 > 面试题库 >

非连续元素的最大和

穆博简
2023-03-14
问题内容

给定一个正整数数组,从该数组中查找非连续元素的最有效算法是什么,这些元素相加在一起会产生最大和?


问题答案:

动态编程?给定一个数组A[0..n],使它M(i)成为使用带有索引的元素的最佳解决方案0..i。然后M(-1) = 0(用于重复)M(0) = A[0],和M(i) = max(M(i - 1), M(i - 2) + A[i]) for i = 1, ..., nM(n)是我们想要的解决方案。这是O(n)。您可以使用另一个数组存储为每个子问题做出的选择,从而恢复所选的实际元素。



 类似资料:
  • 所以,我有一个所有正自然数的数组。给我一个阈值。我必须找出总和小于给定阈值的数字(连续的)的最大计数。 输入数组的最大大小可以为 10^5。 基本上,我想到了一种算法,它计算原始数组的子集中元素的数量,这些元素的总和将小于给定的阈值。但是,这将导致O(N^2).的复杂性有人能建议一个更好的算法吗?我不是在寻找一个代码,只有一个算法/伪代码将做得很好。谢谢!

  • {4,5,1,5,7,6,8,4,1},答案是5。 对于第一个例子,子数组{5,3,1,4,2}排序后可以形成连续序列1,2,3,4,5,它们是最长的。 对于第二个示例,子数组{5,7,6,8,4}是结果子数组。

  • 我以前见过一些最长的连续序列问题,比如查找递增子序列。我现在正在努力进一步发展我的技能。给定一个整数数组,我想找到一个最长的连续序列,其中各个子序列中所有元素的差值小于一个给定的数字,例如3。一个例子是[10,11,12,15,13],其中只有前三个元素满足条件。此外,我还想返回给定数组中第一个和最后一个元素的索引。 我想做两个函数;get_first_element(arr)和get_last_

  • NowCoder 题目描述 {6, -3, -2, 7, -15, 1, 2, 2},连续子数组的最大和为 8(从第 0 个开始,到第 3 个为止)。 解题思路 // java public int FindGreatestSumOfSubArray(int[] nums) { if (nums == null || nums.length == 0) return 0;

  • 给定一个由n个非负整数组成的数组(ARR[]),我们必须找到元素的最小和,以便每3个连续元素中至少有一个被选中。 请解释所形成的递归方程背后的直觉。为什么添加当前的第i个第数组元素和最后三次递归调用的结果的最小值会给出大小为i的数组的正确答案呢?

  • 问题内容: 简介: 就我所能搜索到的而言,尚无此问题。 这是一个面试问题。 我什至没有专门寻找代码解决方案,任何算法/伪代码都可以使用。 问题: 给定一个整数数组及其大小,找到2个最小和的 非后续 元素(在数组中不能相邻)。另外,答案中不得包含第一个或最后一个元素(index 和)。解决方案还应该是 时间和空间的复杂性。 例如,当回答是,因为。 当答案为时,因为和不能选择的任何一个,因为处于数组的

  • 我无法解决如何选择元素的问题。 所以,我想总的来说 如果我们选择2个连续的元素Arr[i]和Arr[i+1], 然后我们不能从接下来的3个值Arr[i+2]、Arr[i+3]、Arr[i+4]中选择,我们只能从Arr[i+5]中选择 取第4、5和9位的值 即500+900+100=1500 另一个例子: 即700+900+700+500=2800

  • 一、题目 输入一个整型数组,数组里有正数也有负数。数组中一个或连续的多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。 例子说明: 例如输入的数组为{1, -2, 3, 10, -4, 7, 2, -5},和最大的子数组为{3, 10, -4, 7, 2}。因此输出为该子数组的和18 。 二、解题思路 解法一:举例分析数组的规律。 我们试着从头到尾逐个累加示例数组中的每个