给定一个整数数组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是数组的长度)?
很好的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;
这是可能的:
>
创建一个数组,并为每个i填充A[i]i
创建另一个数组,并用A[j]-j填充每个j
获取具有最高I[maxI]和J[maxJ]的索引
返回 A[最大I] A[最大J] 最大I - 最大J
你去吧,哦!!
对于每个索引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数组返回两个最大的整数。我能够返回最大和最小的罚款,但无法获得返回两个最大罚款的算法。任何帮助在这里都将不胜感激。 请原谅我的代码中的任何错误。这是一次练习,问题取自去年大学的考试材料。 这是我的代码: 问题答案: 你可以写