void Main()
{
var list1 = new ListNode(1, new ListNode(2, new ListNode(4, null)));
var list2 = new ListNode(1, new ListNode(3, new ListNode(4, null)));
MergeTwoLists(list1, list2).Dump(); // expected output: [ 1, 1, 2, 3, 4 ]
}
public class ListNode
{
public int val;
public ListNode next;
public ListNode(int val = 0, ListNode next = null)
{
this.val = val;
this.next = next;
}
}
public ListNode MergeTwoLists(ListNode list1, ListNode list2)
{
if (list1 == null) return list2;
if (list2 == null) return list1;
ListNode dummy = new();
ListNode current = dummy;
while (list1 != null && list2 != null)
{
int value = 0;
if (list1.val <= list2.val)
{
value = list1.val;
list1 = list1.next;
}
else
{
value = list2.val;
list2 = list2.next;
}
ListNode temp = new(value);
current.next = temp; // This modifies dummy...
current = current.next; // This does not...
}
if (list1 == null) current.next = list2;
else if (list2 == null) current.next = list1;
return dummy.next;
}
void Main()
{
var list1 = new ListNode(1, new ListNode(2, new ListNode(4, null)));
var list2 = new ListNode(1, new ListNode(3, new ListNode(4, null)));
MergeTwoLists(list1, list2).Dump(); // expected output: [ 1, 1, 2, 3, 4 ]
}
public class ListNode
{
public int val;
public ListNode next;
public ListNode(int val = 0, ListNode next = null)
{
this.val = val;
this.next = next;
}
}
public ListNode MergeTwoLists(ListNode list1, ListNode list2)
{
if (list1 == null) return list2;
if (list2 == null) return list1;
ListNode dummy = new();
ListNode current = dummy;
while (list1 != null && list2 != null)
{
int value = 0;
if (list1.val <= list2.val)
{
value = list1.val;
list1 = list1.next;
}
else
{
value = list2.val;
list2 = list2.next;
}
ListNode temp = new(value);
current.next = temp; // This modifies dummy...
current = current.next; // This does not...
}
if (list1 == null) current.next = list2;
else if (list2 == null) current.next = list1;
return dummy.next;
}