[JavaScript] LeetCode 2181. Merge Nodes in Between Zeros

題目概要

給訂一個 head 鏈結串列,head 以 0 開頭。兩個 0 中間合併為一段,並計算其總和,最後輸出整個鏈結串列合併後總和的結果。

KNjQbXr [JavaScript] LeetCode 2181. Merge Nodes in Between Zeros

解題技巧

  • LeetCode 已經幫忙實現了 ListNode,所以我們只需要去判斷當前的值是否為 0,如果為 0 就將和上一個 0 之間的數總和存進一個鏈結串列中;如果不為 0 就將當前的值加進總和並繼續往下判斷。

程式碼

/**
 * Definition for singly-linked list.
 * function ListNode(val, next) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.next = (next===undefined ? null : next)
 * }
 */
/**
 * @param {ListNode} head
 * @return {ListNode}
 */
var mergeNodes = function(head) {
    let cur = new ListNode();
    let dummy = cur;

    let temp = head;
    let sum = 0; // 計算連續兩個 0 之間的數的總和
    while(temp) {
        if (temp.val === 0) {
            // 將到下一個 0 之前的總和存進 cur 中
            if (sum !== 0) {
                cur.next = new ListNode(sum);
                cur = cur.next;
                sum = 0;               
            }
        } else {
            sum += temp.val;
        }
        temp = temp.next
    }

    return dummy.next; // 一定會有一個 0, 所以跳過 0
};
LaU99Ij [JavaScript] LeetCode 2181. Merge Nodes in Between Zeros

0 0 評分數
Article Rating
訂閱
通知
guest
0 Comments
在線反饋
查看所有評論