美文网首页
2021-03-15算法打卡

2021-03-15算法打卡

作者: 北暖37 | 来源:发表于2021-03-15 15:27 被阅读0次

    1、两数相加
    给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。

    请你将两个数相加,并以相同形式返回一个表示和的链表。

    你可以假设除了数字 0 之外,这两个数都不会以 0 开头。

    示例:
    输入:l1 = [2,4,3], l2 = [5,6,4]
    输出:[7,0,8]
    解释:342 + 465 = 807.
    
    /**
     * 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 addTwoNumbers = function(l1, l2) {
        let resultNode = new ListNode()
        let middle = resultNode
        let remainder = 0
        while (l1 || l2) {
            let num1 = l1 ? l1.val : 0
            let num2 = l2 ? l2.val : 0
            let sum = num1 + num2 + remainder
    
            middle.next = new ListNode(sum % 10)
            middle = middle.next
            remainder = parseInt(sum / 10)
    
            l1 && (l1 = l1.next)
            l2 && (l2 = l2.next)
        }
        if (remainder > 0) {
            middle.next = new ListNode(remainder);
        }
        return resultNode.next
    };
    

    2、反转链表
    反转一个单链表。

    示例:
    输入: 1->2->3->4->5->NULL
    输出: 5->4->3->2->1->NULL
    
    /**
     * 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 reverseList = function(head) {
        let result = null
        let middle = head
        while(middle) {
            const next = middle.next
            middle.next = result
            result = middle
            middle = next
        }
        return result
    };
    

    相关文章

      网友评论

          本文标题:2021-03-15算法打卡

          本文链接:https://www.haomeiwen.com/subject/alpkcltx.html