Files
Leetcode/142. Linked List Cycle II/Solution.cs
Electrominch c388b14c3f Fix 142
2022-10-06 03:12:43 +03:00

30 lines
794 B
C#

namespace _142._Linked_List_Cycle_II;
public class Solution
{
public ListNode? DetectCycle(ListNode head)
{
if(head == null)
return null;
ListNode? cur = head;
int bit = 1 << 28;
int curAbs = 0;
while (cur!=null && (curAbs & bit) == 0)
{
cur.val ^= bit;
cur = cur.next;
if(cur != null)
curAbs = cur.val < 0 ? (cur.val * -1) : cur.val;
}
cur = head;
curAbs = cur.val < 0 ? (cur.val * -1) : cur.val;
while (cur != null && (curAbs & bit) != 0)
{
cur.val ^= bit;
cur = cur.next;
if (cur != null)
curAbs = cur.val < 0 ? (cur.val * -1) : cur.val;
}
return cur;
}
}