給定一個有N個元素的排序數組。需要找到所有元素差異的絕對總和。例如:給定4個元素1,2,3和4. | 1-2 | + | 1-3 | + | 1-4 | + | 2-3 | + | 2-4 | + | 3-4 | = 10.這是我在java中的代碼:在減少大O複雜度方面尋找一種高效的算法
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);
}
尋找一個有效的算法,而不是我使用{0(n^2)複雜度}的微不足道的算法。這是需要此功能的更大程序的要求。輸入(元素數量)可以大到10^5。
請前往http://codereview.stackexchange.com。 –
@JeroenVannevel沒有太多的幫助,沒有收到任何答案,因此重新張貼。 –