[解題] 簡易小題目


Posted by mike-hsieh on 2024-03-25

記錄一下簡易的小題目。

// 費氏數列解法
// 費式數列的特性式是後面的數字等於前面2個數字的加總。 例如,0,1,1,2,3,5,8
function getFString(n, first = 0, second = 1){
    let fArray = [first, second];
    while(fArray.length < n){
        let fArrayLen = fArray.length;
        let curr = fArray[fArrayLen -1]
        let pre = fArray[fArrayLen -2]
        fArray.push(curr + pre)
    }

    console.log(fArray)
}

getFString(7)  //  [0, 1, 1, 2, 3, 5, 8]
// 湊零錢解法
// 假設面值為 1 、 2 、 5 總金額 amount = 11 想要知道最少硬幣解法?
function getMinCoinCount(value, coinList = [5, 2, 1]){
    coinList = coinList.sort();
    coinCount = 0;
    for(let i = coinList.length-1; i >= 0; i--){
        // 如果剩餘金額大於當前的印幣面額
        if(value >= coinList[i]){
            // 除法 + 無條件捨去,取得印幣數量
            coinCount += Math.floor(value/coinList[i]);
            // 剩餘金額 = 剩餘金額 取餘數 
            value = value % coinList[i]
        }
    }

    return coinCount;    
}

// 13 = 5x2 + 2*1 + 1*1,共四枚印幣
getMinCoinCount(13); // 4

#solve-little-problems







Related Posts

Day 1 - Drum Kit (KeyEvent)

Day 1 - Drum Kit (KeyEvent)

《嚴防後宮起火-以無聊宅宅的視角來理解版本控制的概念》

《嚴防後宮起火-以無聊宅宅的視角來理解版本控制的概念》

MTR04_0804

MTR04_0804


Comments