我得到了一個問題:如何找到數組中最高的三個數字?
給定一個arrayOfInts,找到你可以從三個 整數獲取highestProduct。
輸入:var a = [1,7,9,2];預期輸出:7 * 9 * 2 = 126
我們將如何解決這個問題?我寫了代碼但徒勞無功。
function highestProductIntegers(a){
var h1, h2,h3; //three highest number pointers.
a.forEach(function(val, index){
if(index=0){
h1 = val; //assign the first element to h1 (Highest 1)
}
h2 = val; //second to h2
if(val > h1){ //if second is greater than h1 make it h1 || h2 || h3
h3 = h2;
h2 = h1;
h1 = val;
}
else if(val<h1 && val > h2) //keep comparing for all elements.
h2 = val;
else if(val < h1 && val < h2)
h3 = val;
else if(val < h1 && val < h2 && val > h3)
h3=val;
});
return h1*h2*h3;
}
有沒有更簡單或有效的方法來解決這個問題?
排序然後乘以前3個數字。乘法的特性是這樣的,你不需要比較產品。最大的數字是最大的產品。 – Forklift
這個問題比看起來更難:請注意,下面的答案都不適用於測試用例'[-50,-10,1,2,3]'。 –
@JeffBowman是的,我已經評論了有關事實的簽名答案可能與您的意見有關。 – SaidbakR