leetcode2

作者: 大写的空气 | 来源:发表于2021-07-12 19:36 被阅读0次

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

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

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

输入:l1 = [2,4,3], l2 = [5,6,4]
输出:[7,0,8]
解释:342 + 465 = 807.

public class ListNode {
    public var val: Int
    public var next: ListNode?
    public init() { self.val = 0; self.next = nil; }
    public init(_ val: Int) { self.val = val; self.next = nil; }
    public init(_ val: Int, _ next: ListNode?) { self.val = val; self.next = next; }
}
//两数相加
//输入:l1 = [2,4,3], l2 = [5,6,4]
//输出:[7,0,8]
//解释:342 + 465 = 807.
class Solution {
    class func addTwoNumbers(_ l1: ListNode?, _ l2: ListNode?) -> ListNode? {
        guard var node1 = l1, var node2 = l2 else{
            return nil   //两个链表不能为空
        }
        var sums = ListNode()
        var currentNode = sums
        var flags = (node1.val + node2.val)/10  //进位标记
        sums.val = (node1.val + node2.val)%10
        while node1.next != nil || node2.next != nil {
            let node = ListNode()
            let value = (node1.next?.val ?? 0) + (node2.next?.val ?? 0) + flags
            node.val = value % 10
            flags = value / 10
            currentNode.next = node
            currentNode = node
            if node1.next != nil {
                node1 = node1.next!
            }
            if node2.next != nil {
                node2 = node2.next!
            }
            print("循环了")
        }
        if flags > 0 {  //最后一个数进位处理
            let node = ListNode()
            node.val = flags
            currentNode.next = node
        }
        while sums.next != nil {
            print(sums.val)
            sums = sums.next!
        }
        print(sums.val)
        return sums
    }
}
let lnode1 = ListNode(0)
        let lnode2 = ListNode(1)
        lnode1.next = lnode2
        let lnode3 = ListNode(2)
        lnode2.next = lnode3
        let lnode4 = ListNode(3)
        lnode3.next = lnode4
        let lnode5 = ListNode(4)
        lnode4.next = lnode5
        let lnode6 = ListNode(5)
        lnode5.next = lnode6
        let lnode7 = ListNode(6)
        lnode6.next = lnode7
        let lnode8 = ListNode(7)
        lnode7.next = lnode8
        let lnode9 = ListNode(8)
        lnode8.next = lnode9
        
        let rnode1 = ListNode(6)
        let rnode2 = ListNode(6)
        rnode1.next = rnode2
        let rnode3 = ListNode(7)
        rnode2.next = rnode3
        let rnode4 = ListNode(8)
        rnode3.next = rnode4
        let rnode5 = ListNode(9)
        rnode4.next = rnode5
        
        let _ = Solution.addTwoNumbers(lnode1, rnode1)

相关文章

  • LeetCode2

    用链表表示整数,求其相加得到的结果。考察基本的链表操作。因为用的是Java刷题,所以要清楚Java的链表实现。Ja...

  • leetcode2

    按难度排序,每天刷点leetcode题,抄点解法,大部分解答是在leetcode的dicuss中找到的,没有一一引...

  • Leetcode2

    题目描述: 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 示例 1: 输入: 123输...

  • leetcode2

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

  • Leetcode2:python实现

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

  • LeetCode2——Add Two Numbers

    题目 You are given two non-empty linked lists representing ...

  • leetCode2两数相加

    两数相加 给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一...

  • Java实现每日一道算法面试题(2):leetcode2两数相加

    题目:给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能...

网友评论

      本文标题:leetcode2

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