Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops 简化计算每个元素与其右侧元素之间的差值_Loops_For Loop_Nested - Fatal编程技术网

Loops 简化计算每个元素与其右侧元素之间的差值

Loops 简化计算每个元素与其右侧元素之间的差值,loops,for-loop,nested,Loops,For Loop,Nested,我能简化一下吗 for(int k=0;k<n;k++) for(int l=(k+1);l<n;l++) { tot+=(max(a[k],a[l])-min(a[k],a[l])); } for(int k=0;k这里有一个稍微简单的版本: var k = -1, l, tot while(++k < n){ l = k while(++l < n){ tot += Math.abs(a[k] - a[l]) } }

我能简化一下吗

 for(int k=0;k<n;k++)
 for(int l=(k+1);l<n;l++)
 {
     tot+=(max(a[k],a[l])-min(a[k],a[l]));
 }

for(int k=0;k这里有一个稍微简单的版本:

var k = -1,
    l, tot

while(++k < n){
  l = k
  while(++l < n){
    tot += Math.abs(a[k] - a[l])
  }
}

在我看来,你试图计算每个元素和它右边的所有元素之间的差。你能做的是计算整个数组的和,然后每次你从一个元素移动到下一个元素时,从总数中减去这个特定的数字,现在的总差就是当前元素的和

// Sort the array 'a' first and then run this.
int sum = calculateSum() // Write this method yourself to find total
for (int i = 0; i < n; i++)
{
    sum -= a[i];
    tot += (sum - a[i] * (n - i + 1));
}
//首先对数组“a”进行排序,然后运行此操作。
int sum=calculateSum()//自己编写此方法以查找总数
对于(int i=0;i

最后一行通过考虑理想情况下减去考虑中的元素的次数,从总和中减去总差异。

到底有多大,以及你到底想完成什么。在不知道你想要得到什么的情况下,试图优化此代码是毫无意义的。也许你重做这个完全错误,有更简单的东西得到你想要的。它应该是C++中。你可以替换<代码>最大(A[K],[L])(A[K],[L])/代码>类似于<代码> ABS(A[K] -A[L])< /C>。我们需要知道你实际上是在尝试检查数组A[N]的所有2个元素的差异B/W。这太正了,也就是说,我给出了:(max(a[k],a[l])-min(a[k],a[l])可能的
// Sort the array 'a' first and then run this.
int sum = calculateSum() // Write this method yourself to find total
for (int i = 0; i < n; i++)
{
    sum -= a[i];
    tot += (sum - a[i] * (n - i + 1));
}