From c019e8856cd0ca986cb1410afe677903b9038cdb Mon Sep 17 00:00:00 2001 From: Electrominch <64524860+Electrominch@users.noreply.github.com> Date: Sat, 8 Oct 2022 01:07:50 +0300 Subject: [PATCH] Day7 --- .../141. Linked List Cycle.csproj | 11 ++++++ 141. Linked List Cycle/ListNode.cs | 14 +++++++ 141. Linked List Cycle/Program.cs | 9 +++++ 141. Linked List Cycle/Solution.cs | 23 ++++++++++++ ...9. Remove Nth Node From End of List.csproj | 11 ++++++ .../ListNode.cs | 37 +++++++++++++++++++ .../Program.cs | 18 +++++++++ .../Solution.cs | 29 +++++++++++++++ .../203. Remove Linked List Elements.csproj | 11 ++++++ 203. Remove Linked List Elements/ListNode.cs | 37 +++++++++++++++++++ 203. Remove Linked List Elements/Program.cs | 17 +++++++++ 203. Remove Linked List Elements/Solution.cs | 29 +++++++++++++++ Leetcode.sln | 32 ++++++++++++---- 13 files changed, 271 insertions(+), 7 deletions(-) create mode 100644 141. Linked List Cycle/141. Linked List Cycle.csproj create mode 100644 141. Linked List Cycle/ListNode.cs create mode 100644 141. Linked List Cycle/Program.cs create mode 100644 141. Linked List Cycle/Solution.cs create mode 100644 19. Remove Nth Node From End of List/19. Remove Nth Node From End of List.csproj create mode 100644 19. Remove Nth Node From End of List/ListNode.cs create mode 100644 19. Remove Nth Node From End of List/Program.cs create mode 100644 19. Remove Nth Node From End of List/Solution.cs create mode 100644 203. Remove Linked List Elements/203. Remove Linked List Elements.csproj create mode 100644 203. Remove Linked List Elements/ListNode.cs create mode 100644 203. Remove Linked List Elements/Program.cs create mode 100644 203. Remove Linked List Elements/Solution.cs diff --git a/141. Linked List Cycle/141. Linked List Cycle.csproj b/141. Linked List Cycle/141. Linked List Cycle.csproj new file mode 100644 index 0000000..9c58b04 --- /dev/null +++ b/141. Linked List Cycle/141. Linked List Cycle.csproj @@ -0,0 +1,11 @@ + + + + Exe + net6.0 + _141._Linked_List_Cycle + enable + enable + + + diff --git a/141. Linked List Cycle/ListNode.cs b/141. Linked List Cycle/ListNode.cs new file mode 100644 index 0000000..db6092e --- /dev/null +++ b/141. Linked List Cycle/ListNode.cs @@ -0,0 +1,14 @@ +namespace _141._Linked_List_Cycle; + +//Definition for singly-linked list. +public class ListNode +{ + public int val; + public ListNode? next; + public ListNode(int x) + { + val = x; + next = null; + } +} + diff --git a/141. Linked List Cycle/Program.cs b/141. Linked List Cycle/Program.cs new file mode 100644 index 0000000..8fecb51 --- /dev/null +++ b/141. Linked List Cycle/Program.cs @@ -0,0 +1,9 @@ +namespace _141._Linked_List_Cycle; + +internal class Program +{ + static void Main(string[] args) + { + Console.WriteLine("Hello, World!"); + } +} diff --git a/141. Linked List Cycle/Solution.cs b/141. Linked List Cycle/Solution.cs new file mode 100644 index 0000000..e637624 --- /dev/null +++ b/141. Linked List Cycle/Solution.cs @@ -0,0 +1,23 @@ +namespace _141._Linked_List_Cycle; + +public class Solution +{ + public bool HasCycle(ListNode head) + { + if (head == null) + return false; + 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; + } + if ((curAbs & bit) != 0) + return true; + return false; + } +} diff --git a/19. Remove Nth Node From End of List/19. Remove Nth Node From End of List.csproj b/19. Remove Nth Node From End of List/19. Remove Nth Node From End of List.csproj new file mode 100644 index 0000000..4069817 --- /dev/null +++ b/19. Remove Nth Node From End of List/19. Remove Nth Node From End of List.csproj @@ -0,0 +1,11 @@ + + + + Exe + net6.0 + _19._Remove_Nth_Node_From_End_of_List + enable + enable + + + diff --git a/19. Remove Nth Node From End of List/ListNode.cs b/19. Remove Nth Node From End of List/ListNode.cs new file mode 100644 index 0000000..8cdf750 --- /dev/null +++ b/19. Remove Nth Node From End of List/ListNode.cs @@ -0,0 +1,37 @@ +namespace _19._Remove_Nth_Node_From_End_of_List; + +//Definition for singly-linked list. +public class ListNode +{ + public int val; + public ListNode? next; + public ListNode(int val = 0, ListNode? next = null) + { + this.val = val; + this.next = next; + } + + public static ListNode Create(int[] nums) + { + ListNode l = new ListNode(nums[0]); + ListNode cur = l; + for (int i = 1; i < nums.Length; i++) + { + cur.next = new ListNode(nums[i]); + cur = cur.next; + } + return l; + } + + public override string ToString() + { + List list = new List(); + ListNode? cur = this; + while (cur != null) + { + list.Add(cur.val); + cur = cur.next; + } + return String.Join(" ", list); + } +} diff --git a/19. Remove Nth Node From End of List/Program.cs b/19. Remove Nth Node From End of List/Program.cs new file mode 100644 index 0000000..441e727 --- /dev/null +++ b/19. Remove Nth Node From End of List/Program.cs @@ -0,0 +1,18 @@ +namespace _19._Remove_Nth_Node_From_End_of_List; + +internal class Program +{ + static void Main(string[] args) + { + ListNode l1 = new ListNode(1); + ListNode l2 = new ListNode(2); + ListNode l3 = new ListNode(3); + ListNode l4 = new ListNode(4); + + //l1.next = l2; + //l2.next = l3; + //l3.next = l4; + + Console.WriteLine(new Solution().RemoveNthFromEnd(l1, 1)); + } +} diff --git a/19. Remove Nth Node From End of List/Solution.cs b/19. Remove Nth Node From End of List/Solution.cs new file mode 100644 index 0000000..a4d385b --- /dev/null +++ b/19. Remove Nth Node From End of List/Solution.cs @@ -0,0 +1,29 @@ +namespace _19._Remove_Nth_Node_From_End_of_List; + +public class Solution +{ + public ListNode? RemoveNthFromEnd(ListNode head, int n) + { + if (head.next == null) + return null; + ListNode? left = null; + ListNode? right = head; + n--; + while (n-- > 0) + right = right!.next; + while (right!.next != null) + { + if (left == null) + left = head; + else + left = left.next; + right = right.next; + } + if (left != null) + { + left.next = left.next!.next; + return head; + } + return head.next; + } +} diff --git a/203. Remove Linked List Elements/203. Remove Linked List Elements.csproj b/203. Remove Linked List Elements/203. Remove Linked List Elements.csproj new file mode 100644 index 0000000..368a980 --- /dev/null +++ b/203. Remove Linked List Elements/203. Remove Linked List Elements.csproj @@ -0,0 +1,11 @@ + + + + Exe + net6.0 + _203._Remove_Linked_List_Elements + enable + enable + + + diff --git a/203. Remove Linked List Elements/ListNode.cs b/203. Remove Linked List Elements/ListNode.cs new file mode 100644 index 0000000..248cddb --- /dev/null +++ b/203. Remove Linked List Elements/ListNode.cs @@ -0,0 +1,37 @@ +namespace _203._Remove_Linked_List_Elements; + +//Definition for singly-linked list. +public class ListNode +{ + public int val; + public ListNode? next; + public ListNode(int val = 0, ListNode? next = null) + { + this.val = val; + this.next = next; + } + + public static ListNode Create(int[] nums) + { + ListNode l = new ListNode(nums[0]); + ListNode cur = l; + for (int i = 1; i < nums.Length; i++) + { + cur.next = new ListNode(nums[i]); + cur = cur.next; + } + return l; + } + + public override string ToString() + { + List list = new List(); + ListNode? cur = this; + while (cur != null) + { + list.Add(cur.val); + cur = cur.next; + } + return String.Join(" ", list); + } +} diff --git a/203. Remove Linked List Elements/Program.cs b/203. Remove Linked List Elements/Program.cs new file mode 100644 index 0000000..86f4b45 --- /dev/null +++ b/203. Remove Linked List Elements/Program.cs @@ -0,0 +1,17 @@ +namespace _203._Remove_Linked_List_Elements; + +internal class Program +{ + static void Main(string[] args) + { + ListNode l1 = new ListNode(1); + ListNode l2 = new ListNode(2); + ListNode l3 = new ListNode(3); + ListNode l4 = new ListNode(4); + + l1.next = l2; + l2.next = l3; + l3.next = l4; + Console.WriteLine(new Solution().RemoveElements(l1, 3)); + } +} diff --git a/203. Remove Linked List Elements/Solution.cs b/203. Remove Linked List Elements/Solution.cs new file mode 100644 index 0000000..36f1a17 --- /dev/null +++ b/203. Remove Linked List Elements/Solution.cs @@ -0,0 +1,29 @@ +namespace _203._Remove_Linked_List_Elements; + +public class Solution +{ + public ListNode? RemoveElements(ListNode? head, int val) + { + ListNode? first = null; + ListNode? current = null; + while (head != null) + { + if (head.val == val) + { + head = head.next; + continue; + } + if (first == null) + first = current = head; + else + { + current!.next = head; + current = current.next; + } + var buf = head; + head = head.next; + buf.next = null; + } + return first; + } +} diff --git a/Leetcode.sln b/Leetcode.sln index 97e1c56..8376216 100644 --- a/Leetcode.sln +++ b/Leetcode.sln @@ -57,19 +57,25 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "409. Longest Palindrome", " EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "36. Valid Sudoku", "36. Valid Sudoku\36. Valid Sudoku.csproj", "{C1759C38-D2E4-4869-B6C2-259B26586E11}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "344. Reverse String", "344. Reverse String\344. Reverse String.csproj", "{65D5229E-6D7D-41D2-BB68-2EBA40E9DCE3}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "344. Reverse String", "344. Reverse String\344. Reverse String.csproj", "{65D5229E-6D7D-41D2-BB68-2EBA40E9DCE3}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "557. Reverse Words in a String III", "557. Reverse Words in a String III\557. Reverse Words in a String III.csproj", "{B3E1C7CD-0992-49BB-B44A-E129912763DB}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "557. Reverse Words in a String III", "557. Reverse Words in a String III\557. Reverse Words in a String III.csproj", "{B3E1C7CD-0992-49BB-B44A-E129912763DB}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "387. First Unique Character in a String", "387. First Unique Character in a String\387. First Unique Character in a String.csproj", "{3B479362-7079-4112-AFA1-3C344E83C8C2}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "387. First Unique Character in a String", "387. First Unique Character in a String\387. First Unique Character in a String.csproj", "{3B479362-7079-4112-AFA1-3C344E83C8C2}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "383. Ransom Note", "383. Ransom Note\383. Ransom Note.csproj", "{6F43E7FE-AD78-47D6-86FA-33B42DC55882}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "383. Ransom Note", "383. Ransom Note\383. Ransom Note.csproj", "{6F43E7FE-AD78-47D6-86FA-33B42DC55882}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "242. Valid Anagram", "242. Valid Anagram\242. Valid Anagram.csproj", "{FBD8C83E-D3F9-4CE3-B5DD-9C326CBC692C}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "242. Valid Anagram", "242. Valid Anagram\242. Valid Anagram.csproj", "{FBD8C83E-D3F9-4CE3-B5DD-9C326CBC692C}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "589. N-ary Tree Preorder Traversal", "589. N-ary Tree Preorder Traversal\589. N-ary Tree Preorder Traversal.csproj", "{4A8355E0-FF05-4DF3-B735-4B11BEAD95C5}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "589. N-ary Tree Preorder Traversal", "589. N-ary Tree Preorder Traversal\589. N-ary Tree Preorder Traversal.csproj", "{4A8355E0-FF05-4DF3-B735-4B11BEAD95C5}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "102. Binary Tree Level Order Traversal", "102. Binary Tree Level Order Traversal\102. Binary Tree Level Order Traversal.csproj", "{557D8195-C886-4B52-BBC4-285A1C1057FF}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "102. Binary Tree Level Order Traversal", "102. Binary Tree Level Order Traversal\102. Binary Tree Level Order Traversal.csproj", "{557D8195-C886-4B52-BBC4-285A1C1057FF}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "141. Linked List Cycle", "141. Linked List Cycle\141. Linked List Cycle.csproj", "{EC089303-B1E1-482F-BAED-530DAB4C1346}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "203. Remove Linked List Elements", "203. Remove Linked List Elements\203. Remove Linked List Elements.csproj", "{F2C5A71D-91C7-4270-8150-8D96DA73538C}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "19. Remove Nth Node From End of List", "19. Remove Nth Node From End of List\19. Remove Nth Node From End of List.csproj", "{88473211-C7AD-4F83-92C2-D4E6B9BB9D8A}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -213,6 +219,18 @@ Global {557D8195-C886-4B52-BBC4-285A1C1057FF}.Debug|Any CPU.Build.0 = Debug|Any CPU {557D8195-C886-4B52-BBC4-285A1C1057FF}.Release|Any CPU.ActiveCfg = Release|Any CPU {557D8195-C886-4B52-BBC4-285A1C1057FF}.Release|Any CPU.Build.0 = Release|Any CPU + {EC089303-B1E1-482F-BAED-530DAB4C1346}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {EC089303-B1E1-482F-BAED-530DAB4C1346}.Debug|Any CPU.Build.0 = Debug|Any CPU + {EC089303-B1E1-482F-BAED-530DAB4C1346}.Release|Any CPU.ActiveCfg = Release|Any CPU + {EC089303-B1E1-482F-BAED-530DAB4C1346}.Release|Any CPU.Build.0 = Release|Any CPU + {F2C5A71D-91C7-4270-8150-8D96DA73538C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F2C5A71D-91C7-4270-8150-8D96DA73538C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F2C5A71D-91C7-4270-8150-8D96DA73538C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F2C5A71D-91C7-4270-8150-8D96DA73538C}.Release|Any CPU.Build.0 = Release|Any CPU + {88473211-C7AD-4F83-92C2-D4E6B9BB9D8A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {88473211-C7AD-4F83-92C2-D4E6B9BB9D8A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {88473211-C7AD-4F83-92C2-D4E6B9BB9D8A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {88473211-C7AD-4F83-92C2-D4E6B9BB9D8A}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE