File tree Expand file tree Collapse file tree 2 files changed +60
-1
lines changed Expand file tree Collapse file tree 2 files changed +60
-1
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ * Definition for singly-linked list.
3
+ * public class ListNode {
4
+ * public var val: Int
5
+ * public var next: ListNode?
6
+ * public init(_ val: Int) {
7
+ * self.val = val
8
+ * self.next = nil
9
+ * }
10
+ * }
11
+ */
12
+
13
+ /**
14
+ 执行用时 : 72 ms, 在Add Two Numbers的Swift提交中击败了93.53% 的用户
15
+ 内存消耗 : 21.5 MB, 在Add Two Numbers的Swift提交中击败了5.14% 的用户
16
+
17
+ 1. 使用flag标识当前是否需要进位
18
+ 2. 共同遍历两个链表,取两个结点和flag的和,并重设flag
19
+ 3. 处理比较长的链表
20
+ 4. 最终处理flag
21
+ */
22
+ func addTwoNumbers( _ l1: ListNode ? , _ l2: ListNode ? ) -> ListNode ? {
23
+ var flag = 0
24
+ var p = l1
25
+ var q = l2
26
+ var dummy = ListNode ( - 1 )
27
+ var rear = dummy
28
+ while p != nil && q != nil {
29
+ let val = p!. val + q!. val + flag
30
+ let newNode = ListNode ( val % 10 )
31
+ flag = val / 10
32
+ rear. next = newNode
33
+ rear = newNode
34
+ p = p!. next
35
+ q = q!. next
36
+ }
37
+ while p != nil {
38
+ print ( p!. val)
39
+ let val = p!. val + flag
40
+ let newNode = ListNode ( val % 10 )
41
+ flag = val / 10
42
+ rear. next = newNode
43
+ rear = newNode
44
+ p = p!. next
45
+ }
46
+
47
+ while q != nil {
48
+ let val = q!. val + flag
49
+ let newNode = ListNode ( val % 10 )
50
+ flag = val / 10
51
+ rear. next = newNode
52
+ rear = newNode
53
+ q = q!. next
54
+ }
55
+ if flag != 0 {
56
+ rear. next = ListNode ( 1 )
57
+ }
58
+ return dummy. next
59
+ }
Original file line number Diff line number Diff line change 11
11
| 题号 | 题目 | 难度 | Swift | Python | Java | C/C++ | OC |
12
12
| --- | ---- | --- | ----- | ------ | ---- | ----- | -- |
13
13
| 1 | [ 两数之和] ( https://leetcode-cn.com/problems/two-sum ) | 简单 | [ Swift] ( 0001-两数之和/Swift ) | | | | |
14
- | 2 | [ 两数相加] ( https://leetcode-cn.com/problems/add-two-numbers ) | 中等 | | | | | |
14
+ | 2 | [ 两数相加] ( https://leetcode-cn.com/problems/add-two-numbers ) | 中等 | [ Swift ] ( 0002-两数相加/Swift ) | | | | |
15
15
| 3 | [ 无重复字符的最长子串] ( https://leetcode-cn.com/problems/longest-substring-without-repeating-characters ) | 中等 | | | | | |
16
16
| 4 | [ 寻找两个有序数组的中位数] ( https://leetcode-cn.com/problems/median-of-two-sorted-arrays ) | 困难 | | | | | |
17
17
| 5 | [ 最长回文子串] ( https://leetcode-cn.com/problems/longest-palindromic-substring ) | 中等 | | | | | |
You can’t perform that action at this time.
0 commit comments