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); }
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; }
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)); }
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; }
public ListNode(int x) { val = x; next = null; }