ИЛИ короткое замыкание в javascript не работает должным образом - PullRequest
1 голос
/ 06 августа 2020

Короткое замыкание в операционной не работает должным образом, как я думаю. Конечно, я делаю что-то не так, но не могу понять. Пожалуйста помоги! это сводит меня с ума

Я пытаюсь решить проблему слияния двух связанных списков

/**
 * Definition for singly-linked list.
 * function ListNode(val, next) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.next = (next===undefined ? null : next)
 * }
 */
/**
 * @param {ListNode} l1
 * @param {ListNode} l2
 * @return {ListNode}
 */
var mergeTwoLists = function(l1, l2) {
    let root = new ListNode(-1);
    
    function recList(node, l1, l2) {
        if(!l1 && !l2) {
            return;   
        }
        let smallerNode;
       
        if(!l1) {
            smallerNode = l2;  
         }
        if(!l2) {
            smallerNode = l1;   
        }
        
        
        smallerNode = smallerNode || (l1.val <= l2.val) ? l1 : l2; // this throws an error that cant evaluate .val of null as l1 is null
        
        // however this works just fine
        // if(!smallerNode) {
        //    smallerNode = (l1.val <= l2.val) ? l1 : l2;
        // }
        
        node.next = smallerNode;
        if(smallerNode === l1) {
            l1 = l1.next;
            
        } else {
            l2 = l2.next;
        }
        
        recList(smallerNode, l1, l2);
    }
    
    recList(root, l1, l2);
    
    return root.next;
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...