Skip to content

Latest commit

 

History

History
57 lines (43 loc) · 1.46 KB

66md.md

File metadata and controls

57 lines (43 loc) · 1.46 KB

LeetCode 66. Plus One

##題目 Given a non-negative number represented as an array of digits, plus one to the number.

The digits are stored such that the most significant digit is at the head of the list.

##翻譯 給一包含非數整數的陣列,其中每一個值代表該位數的值,對這個陣列加1。

範例:
19 = [1,9] , 19+1 = 20 = [2,0]。

##思路

  1. 陣列最後一個數是個位數,所以從後面開始讀,個位數+1後,如果有進位,儲存進位值,val = 0,沒進位直接存儲。
  2. 處理十位數,如果個位數有進位,十位數+1,再判斷十位數是否有進位
  3. 重複上面動做值到陣列結束

##解題

/**
 * @param {number[]} digits
 * @return {number[]}
 */
var plusOne = function(digits) {
    // 判斷相加後是否需進位
    var carry = 0;
  
    for(var i = digits.length - 1 ; i >= 0 ; i--){
        // 目前位數 = 目前位數+前面是否進位
        digits[i]= digits[i] + carry;
        
        // list最後一個數字,也就是個位數,給他+1
        if(i == digits.length - 1 ){
          digits[i] = digits[i] + 1;
        } 
        
        // 如果目前這個位數等於10(因為只+1,所以不會超過10),進位
        if(digits[i] == 10){
          digits[i] = 0;
          carry = 1;
        } else {
          carry = 0;
        }
    }
    
    // 最後如果有進位
    if(carry == 1){
        digits.unshift(carry); 
    }
    
    return digits;
};