File tree Expand file tree Collapse file tree 2 files changed +21
-67
lines changed
src/main/java/name/guolanren/_1to100/_1to10/p2 Expand file tree Collapse file tree 2 files changed +21
-67
lines changed Original file line number Diff line number Diff line change 7
7
public class AddTwoNumbers {
8
8
9
9
public ListNode addTwoNumbers (ListNode l1 , ListNode l2 ) {
10
- ListNode sumListNode = l1 ;
11
- ListNode currentNode = sumListNode ;
12
- ListNode prevNode = null ;
13
- int carry = 0 ;
14
- while (true ) {
15
- // l1 遍历完了,将 l2 加上进位后,接到 sumListNode 尾
16
- if (l1 == null ) {
17
- prevNode .next = withCarry (l2 , carry );
18
- break ;
10
+ ListNode l3 = new ListNode ();
11
+ ListNode tail = l3 ;
12
+ int nodeVal = 0 ;
13
+ while (l1 != null || l2 != null || nodeVal != 0 ) {
14
+ if (l1 != null ) {
15
+ nodeVal += l1 .val ;
16
+ l1 = l1 .next ;
19
17
}
20
- // l2 遍历完了,将 l1 加上进位后,接到 sumListNode 尾
21
- if (l2 == null ) {
22
- prevNode .next = withCarry (l1 , carry );
23
- break ;
24
- }
25
-
26
- // 计算当前节点值
27
- currentNode .val = l1 .val + l2 .val + carry ;
28
18
29
- // 是否需要进位
30
- if (currentNode .val > 9 ) {
31
- currentNode .val -= 10 ;
32
- carry = 1 ;
33
- } else {
34
- carry = 0 ;
19
+ if (l2 != null ) {
20
+ nodeVal += l2 .val ;
21
+ l2 = l2 .next ;
35
22
}
36
23
37
- l1 = l1 .next ;
38
- l2 = l2 .next ;
39
- prevNode = currentNode ;
40
- currentNode = currentNode .next ;
24
+ tail .next = new ListNode (nodeVal % 10 );
25
+ tail = tail .next ;
26
+ nodeVal = nodeVal / 10 ;
41
27
}
42
- return sumListNode ;
28
+ return l3 . next ;
43
29
}
30
+ }
44
31
45
- /**
46
- * ListNode 加上进位
47
- */
48
- private ListNode withCarry (ListNode l , int carry ) {
49
- ListNode head = l ;
50
- if (l != null ) {
51
- while (true ) {
52
- l .val += carry ;
53
-
54
- if (l .val < 10 ) {
55
- break ;
56
- }
57
-
58
- l .val -= 10 ;
59
- carry = 1 ;
60
-
61
- if (l .next == null ) {
62
- l .next = new ListNode (carry );
63
- break ;
64
- }
65
-
66
- l = l .next ;
67
- }
68
- } else if (carry > 0 ) {
69
- return new ListNode (carry );
70
- }
71
- return head ;
72
- }
32
+ class ListNode {
33
+ int val ;
34
+ ListNode next ;
35
+ ListNode () {}
36
+ ListNode (int val ) { this .val = val ; }
37
+ ListNode (int val , ListNode next ) { this .val = val ; this .next = next ; }
73
38
}
Load Diff This file was deleted.
You can’t perform that action at this time.
0 commit comments