Wrote a shorter version of the two number adder.
This commit is contained in:
		
							parent
							
								
									3be79b5a99
								
							
						
					
					
						commit
						2bc25726d2
					
				|  | @ -23,7 +23,12 @@ namespace P002_Add_Two_Numbers | |||
|             input2.next = new ListNode(6); | ||||
|             input2.next.next = new ListNode(4); | ||||
| 
 | ||||
|             var answer = solution.AddTwoNumbers(input1, input2); | ||||
|             var answer = solution.AddTwoNumbersV1(input1, input2); | ||||
|             for (ListNode x1 = answer; x1 != null; x1 = x1?.next) | ||||
|                 Console.Write(x1.val + " "); | ||||
|             Console.Write("\n"); | ||||
| 
 | ||||
|             answer = solution.AddTwoNumbersV2(input1, input2); | ||||
|             for (ListNode x1 = answer; x1 != null; x1 = x1?.next) | ||||
|                 Console.Write(x1.val + " "); | ||||
|             Console.Write("\n"); | ||||
|  |  | |||
|  | @ -13,7 +13,7 @@ namespace P002_Add_Two_Numbers | |||
|          * Status: Accepted | ||||
|          * Runtime: 166 ms | ||||
|          */ | ||||
|         public ListNode AddTwoNumbers(ListNode l1, ListNode l2) | ||||
|         public ListNode AddTwoNumbersV1(ListNode l1, ListNode l2) | ||||
|         { | ||||
|             StringBuilder result = new StringBuilder(); | ||||
| 
 | ||||
|  | @ -40,5 +40,27 @@ namespace P002_Add_Two_Numbers | |||
| 
 | ||||
|             return head; | ||||
|         } | ||||
|         /** | ||||
|          * 1562 / 1562 test cases passed. | ||||
|          * Status: Accepted | ||||
|          * Runtime: 189 ms | ||||
|          */ | ||||
|         public ListNode AddTwoNumbersV2(ListNode l1, ListNode l2) | ||||
|         { | ||||
|             ListNode previous = new ListNode(0); | ||||
|             ListNode head = previous; | ||||
|             int carry = 0, value = 0; | ||||
| 
 | ||||
|             for (ListNode x1 = l1, x2 = l2; x1 != null || x2 != null || carry != 0; x1 = x1?.next, x2 = x2?.next) | ||||
|             { | ||||
|                 ListNode current = new ListNode(0); | ||||
|                 value = (x1 != null ? x1.val : 0) + (x2 != null ? x2.val : 0) + carry; | ||||
|                 carry = value / 10; | ||||
|                 current.val = (value % 10); | ||||
|                 previous = previous.next = current; | ||||
|             } | ||||
| 
 | ||||
|             return head.next; | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue