我是編程新手,嘗試通過探索學習。我正在尋找一個解決方案來找到數組中具有最佳空間複雜度的重複整數的最大時間總和。假設我們有[1,2,3,3]結果應該是6,並且空間複雜度最小,比如O(n)。以最小的空間複雜度查找數組中最大整數的總和
我想出了一個解決方案,但不確定複雜性。需要一些幫助來了解下面提到的代碼是否具有最小的複雜性,或者它可能會更好(絕對是!)。對不起,如果我犯了錯誤,並提前致謝。
public static int maxDuplicateSumSpaceBased(int[] a)
{
int maxRepCount = 1, tempCount;
int maxRepNum = a[0];
int temp = 0;
for (int i = 0; i < (a.length - 1); i++)
{
temp = a[i];
tempCount = 0;
for (int j = 1; j < a.length; j++)
{
if (temp == a[j])
tempCount++;
}
if (tempCount > maxRepCount)
{
maxRepNum = temp;
maxRepCount = tempCount;
}
}
return maxRepNum * maxRepCount;
}
對不起,我的意思是程序應該儘可能低的內存消耗。希望它清楚,謝謝 –
從空間複雜性的角度來看,你的算法是很好的,因爲它只使用一些原始變量。當O(n)可能時,其時間複雜度爲O(n^2)。 –
謝謝,是的,我瞭解通過消除雙循環來提高時間複雜度,這裏我更關心空間複雜性。如果您可以指導,那麼上述計劃的空間複雜程度如何? –