From f7e359d077deab45bf6e3d7461976d4c9efd21ee Mon Sep 17 00:00:00 2001 From: Lanre Adedara Date: Tue, 4 Jun 2024 07:43:43 +0100 Subject: [PATCH] feat: add swift implementation to lcof2 problem: No.025 --- .../README.md" | 48 +++++++++++++++++++ .../Solution.swift" | 43 +++++++++++++++++ 2 files changed, 91 insertions(+) create mode 100644 "lcof2/\345\211\221\346\214\207 Offer II 025. \351\223\276\350\241\250\344\270\255\347\232\204\344\270\244\346\225\260\347\233\270\345\212\240/Solution.swift" diff --git "a/lcof2/\345\211\221\346\214\207 Offer II 025. \351\223\276\350\241\250\344\270\255\347\232\204\344\270\244\346\225\260\347\233\270\345\212\240/README.md" "b/lcof2/\345\211\221\346\214\207 Offer II 025. \351\223\276\350\241\250\344\270\255\347\232\204\344\270\244\346\225\260\347\233\270\345\212\240/README.md" index b6ac6e4222aa3..5dfd5611b39f8 100644 --- "a/lcof2/\345\211\221\346\214\207 Offer II 025. \351\223\276\350\241\250\344\270\255\347\232\204\344\270\244\346\225\260\347\233\270\345\212\240/README.md" +++ "b/lcof2/\345\211\221\346\214\207 Offer II 025. \351\223\276\350\241\250\344\270\255\347\232\204\344\270\244\346\225\260\347\233\270\345\212\240/README.md" @@ -209,6 +209,54 @@ func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode { } ``` +#### Swift + +```swift +/** + * Definition for singly-linked list. + * public class ListNode { + * var val: Int + * var next: ListNode? + * init() { self.val = 0; self.next = nil; } + * init(_ val: Int) { self.val = val; self.next = nil; } + * init(_ val: Int, _ next: ListNode?) { self.val = val; self.next = next; } + * } + */ + +class Solution { + func addTwoNumbers(_ l1: ListNode?, _ l2: ListNode?) -> ListNode? { + var s1: [Int] = [] + var s2: [Int] = [] + + var node1 = l1 + var node2 = l2 + + while let n1 = node1 { + s1.append(n1.val) + node1 = n1.next + } + + while let n2 = node2 { + s2.append(n2.val) + node2 = n2.next + } + + var carry = 0 + let dummy: ListNode? = ListNode(0) + + while !s1.isEmpty || !s2.isEmpty || carry != 0 { + carry += (s1.isEmpty ? 0 : s1.removeLast()) + (s2.isEmpty ? 0 : s2.removeLast()) + let node = ListNode(carry % 10) + node.next = dummy?.next + dummy?.next = node + carry /= 10 + } + + return dummy?.next + } +} +``` + diff --git "a/lcof2/\345\211\221\346\214\207 Offer II 025. \351\223\276\350\241\250\344\270\255\347\232\204\344\270\244\346\225\260\347\233\270\345\212\240/Solution.swift" "b/lcof2/\345\211\221\346\214\207 Offer II 025. \351\223\276\350\241\250\344\270\255\347\232\204\344\270\244\346\225\260\347\233\270\345\212\240/Solution.swift" new file mode 100644 index 0000000000000..96e52f4807a30 --- /dev/null +++ "b/lcof2/\345\211\221\346\214\207 Offer II 025. \351\223\276\350\241\250\344\270\255\347\232\204\344\270\244\346\225\260\347\233\270\345\212\240/Solution.swift" @@ -0,0 +1,43 @@ +/** + * Definition for singly-linked list. + * public class ListNode { + * var val: Int + * var next: ListNode? + * init() { self.val = 0; self.next = nil; } + * init(_ val: Int) { self.val = val; self.next = nil; } + * init(_ val: Int, _ next: ListNode?) { self.val = val; self.next = next; } + * } + */ + +class Solution { + func addTwoNumbers(_ l1: ListNode?, _ l2: ListNode?) -> ListNode? { + var s1: [Int] = [] + var s2: [Int] = [] + + var node1 = l1 + var node2 = l2 + + while let n1 = node1 { + s1.append(n1.val) + node1 = n1.next + } + + while let n2 = node2 { + s2.append(n2.val) + node2 = n2.next + } + + var carry = 0 + let dummy: ListNode? = ListNode(0) + + while !s1.isEmpty || !s2.isEmpty || carry != 0 { + carry += (s1.isEmpty ? 0 : s1.removeLast()) + (s2.isEmpty ? 0 : s2.removeLast()) + let node = ListNode(carry % 10) + node.next = dummy?.next + dummy?.next = node + carry /= 10 + } + + return dummy?.next + } +} \ No newline at end of file