diff --git a/LinkedListCycle2.java b/LinkedListCycle2.java new file mode 100644 index 00000000..0f2743b4 --- /dev/null +++ b/LinkedListCycle2.java @@ -0,0 +1,31 @@ +// Time complexity: O(n) +// Space complexity: O(1) + +public class Solution { + public ListNode detectCycle(ListNode head) { + boolean flag = false; + ListNode slow = head; + ListNode fast = head; + + while(fast != null && fast.next != null) { + slow = slow.next; + fast = fast.next.next; + + if(slow == fast) { + flag = true; + break; + } + } + + if(!flag) { + return null; + } + + slow = head; + while (fast != slow) { + slow = slow.next; + fast = fast.next; + } + return slow; + } +} \ No newline at end of file diff --git a/RemoveNthNodeFromEnd.java b/RemoveNthNodeFromEnd.java new file mode 100644 index 00000000..58100685 --- /dev/null +++ b/RemoveNthNodeFromEnd.java @@ -0,0 +1,22 @@ +// Time complexity: O(n) +// Space complexity: O(1) +class Solution { + public ListNode removeNthFromEnd(ListNode head, int n) { + + ListNode dummy = new ListNode(-1, head); + ListNode slow = dummy; + ListNode fast = dummy; + + for(int i = 0; i <=n; i++) { + fast = fast.next; + } + + while(fast != null) { + slow = slow.next; + fast = fast.next; + } + + slow.next = slow.next.next; + return dummy.next; + } +} \ No newline at end of file diff --git a/ReverseLinkedList.java b/ReverseLinkedList.java new file mode 100644 index 00000000..2e508b90 --- /dev/null +++ b/ReverseLinkedList.java @@ -0,0 +1,19 @@ +/** + * + * Time complexity: O(n) + * Space complexity: O(1) + */ +class Solution { + public ListNode reverseList(ListNode head) { + ListNode prev = null; + ListNode curr = head; + + while(curr != null) { + ListNode temp = curr.next; + curr.next = prev; + prev = curr; + curr = temp; + } + return prev; + } +}