当前位置: 首页 > 知识库问答 >
问题:

最大化整数数组的和距离

轩辕煜
2023-03-14

给定一个整数数组A,返回两个元素之间可能的最大求和距离。对于i,求和距离定义为A[i]A[j](i-j)

例如,在< code>A = [8,2,4,9,5,8,0,3,8,2]的情况下,i=0且j=8时获得的最大和距离为24

O(n2)解很简单。是否有O(n)解(其中n是数组的长度)?

共有3个答案

卢聪
2023-03-14

很好的soln…Pham…谢谢。更具可读性的soln可以是。。。

    int sumP = Integer.MIN_VALUE;
    int sumQ = Integer.MIN_VALUE;
    for(int i = 0; i < A.length; i++){
        sumP = Math.max(A[i] - i, sumP);
        sumQ = Math.max(A[i] + i, sumQ);
    }
    return sumP + sumQ;
胡鸿禧
2023-03-14

这是可能的:

>

  • 创建一个数组,并为每个i填充A[i]i

    创建另一个数组,并用A[j]-j填充每个j

    获取具有最高I[maxI]和J[maxJ]的索引

    返回 A[最大I] A[最大J] 最大I - 最大J

    你去吧,哦!!

  • 靳茂
    2023-03-14

    对于每个索引i,我们只需要知道一个index最大化总和A[i]A[index](i-index)=A[i]i(A[index]-index)。这意味着,我们只需要维护一个index,其中A[index]-index是最大的。

    int index = 0;
    int result = 0;
    
    for(int i = 1; i < n; i++){
        int total = A[i] + i + A[index] - index;
        result = max(result, total);
        if(A[i] - i > A[index] - index){
            index = i;
        }
    }
    return result;
    
     类似资料:
    • 我试图在一个数组中找到具有最大和的邻接子数组。所以,对于数组 {5,15,-30,10,-5,40,10}

    • 在C语言中,整数(对于32位机器)是32位,其范围为-32,768到+32,767。在Java中,整数(长)也是32位,但范围从-2,147,483,648到+2,147,483,647。 我不明白Java中的范围是怎么不同的,尽管位数是一样的。有人能解释一下吗?

    • 问题内容: 我正在寻找python中整数的最小值和最大值。例如,在Java中,我们有和。python中是否有类似的东西? 问题答案: Python 3 在Python 3中,此问题不适用。普通int类型是无界的。 但是,你实际上可能正在寻找有关当前解释器的字长的信息,在大多数情况下,该信息将与机器的字长相同。该信息在Python 3中仍以形式提供,这是一个有符号的单词可以表示的最大值。等效地,它是

    • 给出了一个由N个整数组成的数组。 数组的最大和是该数组的非空连续子数组的元素的最大和。 例如,数组[1,-2,3,-2,5]的最大和是6,因为子数组[3,-2,5]的和是6,并且不可能实现更大的子数组和。 现在,您只能从给定数组中删除一个以上的元素。这样做可以得到的结果数组的最大可能最大和是多少? 我正在用我自己的测试用例测试我的代码。我在Dev-C++上得到了正确的输出。但是当我在网上测试我的代

    • 我想用C++实现这样一个算法,但是任何对解决方案的描述都会很有帮助。

    • 问题内容: 我试图从我的int数组返回两个最大的整数。我能够返回最大和最小的罚款,但无法获得返回两个最大罚款的算法。任何帮助在这里都将不胜感激。 请原谅我的代码中的任何错误。这是一次练习,问题取自去年大学的考试材料。 这是我的代码: 问题答案: 你可以写