CODE

ADD TWO NUMBERS

Linked List

/**
* Definition for singly-linked list.
* public class ListNode {
*     public int val;
*     public ListNode next;
*     public ListNode(int val=0, ListNode next=null) {
*         this.val = val;
*         this.next = next;
*     }
* }
*/

public class Solution {
  public ListNode AddTwoNumbers(ListNode l1, ListNode l2) {
    List<ListNode> stack1 = new List<ListNode>();
    List<ListNode> stack2 = new List<ListNode>();
    List<ListNode> sumStack = new List<ListNode>();

    ListNode h1 = l1;
    ListNode h2 = l2;

    while (h1 != null)
    {
      stack1.Add(h1);
      h1 = h1.next;
    }
    while (h2 != null)
    {
      stack2.Add(h2);
      h2 = h2.next;
    }

    List<ListNode> sumList = new List<ListNode>();


    int carry = 0;

    while (stack1.Count > 0 && stack2.Count > 0)
    {
      int sum = stack1[0].val + stack2[0].val + carry;
      if (sum > 9) {
        carry = 1;
        sum -= 10;
      } else {
        carry = 0;
      }

      ListNode digit = new ListNode(sum);
      sumStack.Add(digit);
      stack1.RemoveAt(0);
      stack2.RemoveAt(0);
    }

    while (stack1.Count > 0)
    {
      int sum = stack1[0].val + carry;
      if (sum > 9) {
        carry = 1;
        sum -= 10;
      } else {
        carry = 0;
      }
      ListNode digit = new ListNode(sum);
      sumStack.Add(digit);
      stack1.RemoveAt(0);
    }
    while (stack2.Count > 0)
    {
      int sum = stack2[0].val + carry;
      if (sum > 9) {
        carry = 1;
        sum -= 10;
      } else {
        carry = 0;
      }
      ListNode digit = new ListNode(sum);
      sumStack.Add(digit);
      stack2.RemoveAt(0);
    }
    if (carry == 1)
    {
      ListNode digit = new ListNode(1);
      sumStack.Add(digit);
      carry = 0;
    }
    sumStack.Reverse();
    while (sumStack.Count > 0)
    {
      if (sumList.Count == 0)
        sumStack[0].next = null;
      else
        sumStack[0].next = sumList[0];
      
      sumList.Insert(0, sumStack[0]);
      sumStack.RemoveAt(0);
    }

    return sumList[0];
  }
}						
					
41
© 2025 Dallas Scott