2012-09-03 33 views
0

我有四個數字可能是相同的,但或很可能不同。基本上我希望這個函數不選擇它們的數量相等,但如果它們不相等,則選擇最低的那個,如果有兩個相同,就選擇其中的一個,然後去做。如何從數字列表中選擇最低的數字?

像例如我有3434,3396, 34143374。那麼我想要函數返回給我說0如果他們都是一樣的,1爲第一個等等。所以在這種情況下,我需要退回4

但是,如果數字是321576812321它將返回給我1

我已經在這一兩天了,我似乎無法找到任何我需要做的事情。任何人都知道可以使這個工作神奇的東西?謝謝!

編輯 我的做法讓我做一起創建一個數組排序,並試圖利用最後的結果,但是當我的數組進行排序,鍵搞的一團糟線的東西,所以我不知道是哪個價值它屬於

var choices = new Array(); 
choices[1] = parseInt(value1); 
choices[2] = ... 
choices = choices.sort(); 
//and then I ran into the problem that my keys being not starting 
//with 0, it added an element which I was able to remove by doing this 
choices = choices.splice(0,4); 

然後我卡了有

+2

請顯示您的嘗試。與從頭開始編寫整個算法相比,有人可能能夠看到你所缺少的內容。 –

+0

數組基於零。第一個元素在'choices [0]'。 – some

回答

2

這裏的旅程回答你的問題開始。正如其他人所指出的,這段代碼並不能處理你提到的所有情況;這是故意的。

如何從數字列表中選擇最低數字?

手卷方式; O(n) and one pass:

var myList = [3434, 3396, 3414, 3374]; 
var min = Infinity; 
var minIndex = -1; 
var current; 

for (var i=0; i<myList.length; i++) 
{ 
    current = myList[i]; 
    if (current < min) 
    { 
     min = current; 
     minIndex = i; 
    } 
} 

// the value you want is in minIndex 

更簡潔;也O(n)而是兩個穿過陣列:

var min = Math.min.apply(null, myList); 
var minIndex = myList.indexOf(min); 

N.BArray.indexOf需要在舊版本的IE的墊片。


基本上我想這個函數來選擇任何號碼,他們是平等的

這項工作,因爲他們說,是留給讀者。

+0

如果所有數字都相等,似乎不會返回任何數字。 – Thilo

+1

這將返回一個從零開始的索引。他想要一個基於一個索引。 –

+4

@JohnKurlak我知道。要求OP做出絲毫的思考是否真的太過分了? –

相關問題