コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }