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 = new ListNode(6);
|
||||||
input2.next.next = new ListNode(4);
|
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)
|
for (ListNode x1 = answer; x1 != null; x1 = x1?.next)
|
||||||
Console.Write(x1.val + " ");
|
Console.Write(x1.val + " ");
|
||||||
Console.Write("\n");
|
Console.Write("\n");
|
||||||
|
|
|
@ -13,7 +13,7 @@ namespace P002_Add_Two_Numbers
|
||||||
* Status: Accepted
|
* Status: Accepted
|
||||||
* Runtime: 166 ms
|
* Runtime: 166 ms
|
||||||
*/
|
*/
|
||||||
public ListNode AddTwoNumbers(ListNode l1, ListNode l2)
|
public ListNode AddTwoNumbersV1(ListNode l1, ListNode l2)
|
||||||
{
|
{
|
||||||
StringBuilder result = new StringBuilder();
|
StringBuilder result = new StringBuilder();
|
||||||
|
|
||||||
|
@ -40,5 +40,27 @@ namespace P002_Add_Two_Numbers
|
||||||
|
|
||||||
return head;
|
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