沒想到這系列已經來到第10天,希望我能堅持到第30天XD
今天一樣來做 Coding Practice
Here's a quick exercise: Given an sorted array, write a function that returns all pairs whose average value equals the value passed as an argument.
寫一個 function 找出 sorted array 內所有的 pair
pair 要滿足兩元素相加的平均數與傳入的 argument 相等
提示:先用linear search做看看~
先不要偷看答案唷~
Answer:
const arrData = [-11, 0, 1, 2, 3, 9, 14, 17, 21];
function findAveragePair(arr, avgValue) {
const result = [];
for (let i = 0; i < arr.length - 1; i++) {
for (let j = i + 1; j < arr.length; j++) {
if (arr[i] + arr[j] == avgValue * 2) {
result.push([arr[i], arr[j]]);
}
}
}
return result;
}
averagePair(arrData,1.5); // [[-11, 14] , [0, 3] , [1, 2]]
雖然成功找出了所有的 pair,但 BigO 會是 O(n^2)
那..有沒有更聰明的方法呢?...