ブラシ74-2つの数値を追加II

113. 2つの数値を加算するII

タイトルリンク

出典:LeetCode
リンク:https ://leetcode-cn.com/problems/add-two-numbers-ii

タイトルの説明

空でない2つのリンクリストを与えて、2つの負でない整数を表します。最上位の数字はリストの最初にあります。それぞれのノードは1桁のみを格納します。これら2つの数値を追加すると、新しいリンクリストが返されます。

数字の0を除いて、これらの数字はどちらもゼロで始まらないと想定できます。

 

上級:

入力リストを変更できない場合はどうすればよいですか?つまり、リスト内のノードを反転することはできません。

 

例:

入力:(7-> 2-> 4-> 3)+(5-> 6-> 4)
出力:7-> 8-> 0-> 7

もっと難しい

2つのリンクリストの値を1つずつ配列に入れ、対応する位置を小数に追加します。

トピック分析

  1. 2つのリンクリストの値を順番に配列に入れます。
  2. 最後に配列に配置された数値を追加し、pop()を使用して最後の要素を返します。
  3. 対応する位置は、完全な小数点まで加算されます。
  4. 最後に、リンクされたリストの形式で出力されます。
/ ** 
 *単一リンクリストの定義。
 * function ListNode(val){ 
 * this.val = val; 
 * this.next = null; 
 *} 
 * / 
/ ** 
 * @param {ListNode} l1 
 * @param {ListNode} l2 
 * @return {ListNode} 
 * / 
var addTwoNumbers = function(l1、l2){ 
    let arr_1 = []; 
    let arr_2 = []; 
    let arr = []; 

    フラグを0にします。

    m = 0とします。
    n = 0とします。

    while(l1){ 
        arr_1.push(l1.val); 
        l1 = l1.next; 
    } 
    while(l2){ 
        arr_2.push(l2.val); 
        l2 = l2.next;
    }
    while(arr_1.length> 0 || arr_2.length> 0){ 
        m = Number(arr_1.pop())|| 0; 
        n =数値(arr_2.pop())|| 0; 
        arr.push((m + n + flag)%10); 
        if(m + n + flag> = 10){ 
            flag = 1; 
        } else { 
            フラグ= 0; 
        } 
    } 
    if(flag === 1){ 
        arr.push(1); 
    } 
    let res = {}; 
    curr = resにします。
    while(arr.length> 0){ 
        curr.next = { 
            val:arr.pop()、
            next:null 
        }; 
        curr = curr.next; 
    } 
    return res.next; 
};

  

おすすめ

転載: www.cnblogs.com/liu-xin1995/p/12717241.html