给定一个 N 个元素的排序数组。需要求所有元素的差值的绝对和。例如:给定 4 个元素 1,2,3 和 4。|1-2|+|1-3|+|1-4|+|2-3|+|2-4|+|3-4| = 10. 这是我在 java 中的代码:
List<Integer> a = new ArrayList<Integer>(); //just for understanding , the Array List is already filled with numbers
public static int lsum(int N)//consider the arraylist to be sorted in ascending order.
{
int sum =0;
for( int i=0;i<N;i++)
{
int w =a.get(i);
for(int j =i;j<N;j++)
{
int z = a.get(j);
sum =sum +(z-w);
}
}
return(sum);
}
寻找一种有效的算法,而不是我正在使用的琐碎算法 { O(n^2) 复杂度}。这是需要此功能的更大程序的要求。输入(元素的数量)可以大到 10^5。