2019小米秋招算法題——無限數列

題目

有一個無限數列: 1,2,3,3,4,4,4,5,5,5,5,5,…, 相同的數字排成一行。給出數列中的第n個數, 得出該數所在行之前行的數字個數。

例如:
輸入:6
結果爲:4

我的答案

該題目, 數字有點少, 如果沒有意識到, 還真的比較難發現。

1一個, 2一個, 3兩個, 4三個, 5五個

有沒有發現這其實一個是斐波那契數列。所以可以得到6八個。
現在回過來看示例中的輸入與輸出, 數列中的第6個數是4, 4所在行的之前行有1, 2, 3,3四個數, 所以結果爲4.

知道數字的個數是斐波那契關係之後, 代碼就很簡單了。

代碼實現:

function fb(n) {
    let first = 1
    let second = 1
    let total = 0
    let oldTotal = 0
    while (total < n) {
        oldTotal = total
        total = first  + total
        let temp = first
        first = second
        second = temp + second
    }
    return oldTotal
}

結尾

最近秋招, 心累。 希望大家共勉

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章