2 回答

TA貢獻1829條經(jīng)驗 獲得超9個贊
它是O(n2)i
,你每次迭代都會遞增len(arr)
,直到i
reach len(arr)
。
len(arr) * len(arr)
這在即O(n2)中給出了復雜性。

TA貢獻1878條經(jīng)驗 獲得超4個贊
您可以將代碼重新排列為
function lessThan(arr) {
let results = [];
let i = 0;
while (i < arr.length) {
let j = arr.length - 1;
let count = 0;
while (j !== 1) {
if (arr[i] > arr[j]) {
count++;
}
j--;
}
results.push(count);
i++;
}
return results;
}
是的,您巧妙地將嵌套循環(huán)合并為一個循環(huán),但這并沒有改變它的復雜性。請注意,在您的版本中,while循環(huán)運行arr.length 2次數(shù)i不是在每次迭代時遞增,而是僅在j == 1.
從我的更新版本中,不僅可以清楚地看到代碼是O(n2),而且它是錯誤的:j !== 1(or j > 1) 應該比較i而不是1- 你只想計算右邊的元素。
添加回答
舉報