0
每當我們計算額外空間時,我們都不會將輸入視爲計算的一部分。比方說,我們需要一種算法來打印一個數字,單詞,相當於像1爲「一」,2爲「二」等長碼空間複雜度(輔助)
一個這樣做的方式將每個數字被映射到其詞等同。
Map<Integer, String> map = new HashMap<>();
map.put(1, "One");
.....
map.put(Integer.MAX_VALUE, "Something equivalent");
然後有一個函數返回單詞。這將考慮具有O(N)額外的存儲空間。
我的問題是,如果我們寫一個函數這樣
public printDigit(int n) {
switch(n) {
case 1:
return "One";
...
case Integer.MAX_VALUE:
return "Something equivalent";
}
}
通常情況下,我們不考慮代碼空間的使用是額外的空間?我不習慣那種邏輯,因爲我從來沒有遇到過它。所以我們將這個算法稱爲O(1)額外的空間,因爲我們沒有額外的數據結構來存儲;
通常情況下,我們考慮一個算法,適用於所有可能的輸入大小。在這種情況下,算法的大小並不重要,因爲對於非常大的輸入大小它可以忽略不計。 – mcdowella