static void Main(string[] args) { Console.WriteLine("83. Remove Duplicates from Sorted List"); ListNode l1 = new ListNode(1, null); ListNodeFunctions.AddEndNode(l1, new ListNode(1, null)); ListNodeFunctions.AddEndNode(l1, new ListNode(2, null)); ListNodeFunctions.AddEndNode(l1, new ListNode(3, null)); ListNodeFunctions.AddEndNode(l1, new ListNode(3, null)); ListNode result = DeleteDuplicates(l1); }
public static ListNode DeleteDuplicates(ListNode head) { ListNode ln = head; Hashtable availValues = new Hashtable(); while (ln != null) { if (availValues.ContainsValue(ln.val)) { //its a duplicate remove ListNodeFunctions.RemoveNodeAt(head, ln); } else { availValues.Add(ln.val, ln.val); } ln = ln.next; } return(head); }
public static ListNode MergeTwoLists(ListNode l1, ListNode l2) { ListNode result = null; int l1Index = 0; int l2Index = 0; ListNode next1 = l1; ListNode next2 = l2; while (next1 != null && next2 != null) { if ((next1 != null) && (next1.val <= next2.val)) { if (result != null) { ListNodeFunctions.AddEndNode(result, new ListNode(next1.val)); } else { result = new ListNode(next1.val); } next1 = next1.next; } else { if (result != null) { ListNodeFunctions.AddEndNode(result, new ListNode(next2.val)); } else { result = new ListNode(next2.val); } next2 = next2.next; } } if (next1 != null) { while (next1 != null) { if (result != null) { ListNodeFunctions.AddEndNode(result, new ListNode(next1.val)); } else { result = new ListNode(next1.val); } next1 = next1.next; } } if (next2 != null) { while (next2 != null) { if (result != null) { ListNodeFunctions.AddEndNode(result, new ListNode(next2.val)); } else { result = new ListNode(next2.val); } next2 = next2.next; } } return(result); }