public void TestMethodDeleteDuplicates()
        {
            var list = new ListNode(0);
            list.next = new ListNode(1);
            list.next.next = new ListNode(1);
            list.next.next.next = new ListNode(2);
            list.next.next.next.next = new ListNode(2);

            list = DeleteDuplicatesSolution.DeleteDuplicates(list);
            Assert.AreEqual(2, list.next.next.val);
            Assert.AreEqual(null, list.next.next.next);
        }
コード例 #2
0
 public static bool HasCycle(ListNode head)
 {
     var pre = head;
     var cur = head;
     while (cur != null && cur.next != null)
     {
         if (cur.next == head) return true;
         cur = cur.next;
         pre.next = head;
         pre = cur;
     }
     return false;
 }
コード例 #3
0
        public void TestMethodHasCycle()
        {
            var list = new ListNode(1);
            list.next = new ListNode(2);
            list.next.next = new ListNode(3);
            var cycleNode = new ListNode(4);
            list.next.next.next = cycleNode;
            list.next.next.next.next = new ListNode(5);
            list.next.next.next.next.next = new ListNode(6);
            list.next.next.next.next.next.next = cycleNode;

            Assert.AreEqual(true, HasCycleSolution.HasCycle(list));
        }
コード例 #4
0
 public static ListNode DeleteDuplicates(ListNode head)
 {
     if (head == null) return null;
     var pointer = head;
     while (pointer.next != null)
     {
         while (pointer.val == pointer.next.val)
         {
             pointer.next = pointer.next.next;
             if (pointer.next == null) return head;
         }
         pointer = pointer.next;
     }
     return head;
 }
コード例 #5
0
 public ListNode(int x)
 {
     val = x;
     next = null;
 }
 public ListNode(int x)
 {
     val  = x;
     next = null;
 }