From 6db1fa073dcc243ef73d8c36bb7097a4ce660870 Mon Sep 17 00:00:00 2001 From: Lanre Adedara Date: Thu, 18 Apr 2024 09:44:38 +0100 Subject: [PATCH 1/2] Swift implementation for LCCI 02.04 Signed-off-by: Lanre Adedara --- lcci/02.04.Partition List/README.md | 38 ++++++++++++++++++++++++ lcci/02.04.Partition List/README_EN.md | 38 ++++++++++++++++++++++++ lcci/02.04.Partition List/Solution.swift | 35 ++++++++++++++++++++++ 3 files changed, 111 insertions(+) create mode 100644 lcci/02.04.Partition List/Solution.swift diff --git a/lcci/02.04.Partition List/README.md b/lcci/02.04.Partition List/README.md index c3d23544afd3c..ce5fb370400ac 100644 --- a/lcci/02.04.Partition List/README.md +++ b/lcci/02.04.Partition List/README.md @@ -201,6 +201,44 @@ function partition(head: ListNode | null, x: number): ListNode | null { } ``` +```swift +/** public class ListNode { +* var val: Int +* var next: ListNode? +* init(_ x: Int) { +* self.val = x +* self.next = nil +* } +* } +*/ + +class Solution { + func partition(_ head: ListNode?, _ x: Int) -> ListNode? { + let leftDummy = ListNode(0) + let rightDummy = ListNode(0) + var left = leftDummy + var right = rightDummy + var head = head + + while let current = head { + if current.val < x { + left.next = current + left = left.next! + } else { + right.next = current + right = right.next! + } + head = head?.next + } + + right.next = nil + left.next = rightDummy.next + + return leftDummy.next + } +} +``` + diff --git a/lcci/02.04.Partition List/README_EN.md b/lcci/02.04.Partition List/README_EN.md index af4588c61a042..d4392c7132b4b 100644 --- a/lcci/02.04.Partition List/README_EN.md +++ b/lcci/02.04.Partition List/README_EN.md @@ -179,6 +179,44 @@ function partition(head: ListNode | null, x: number): ListNode | null { } ``` +```swift +/** public class ListNode { +* var val: Int +* var next: ListNode? +* init(_ x: Int) { +* self.val = x +* self.next = nil +* } +* } +*/ + +class Solution { + func partition(_ head: ListNode?, _ x: Int) -> ListNode? { + let leftDummy = ListNode(0) + let rightDummy = ListNode(0) + var left = leftDummy + var right = rightDummy + var head = head + + while let current = head { + if current.val < x { + left.next = current + left = left.next! + } else { + right.next = current + right = right.next! + } + head = head?.next + } + + right.next = nil + left.next = rightDummy.next + + return leftDummy.next + } +} +``` + diff --git a/lcci/02.04.Partition List/Solution.swift b/lcci/02.04.Partition List/Solution.swift new file mode 100644 index 0000000000000..ace99db4370e9 --- /dev/null +++ b/lcci/02.04.Partition List/Solution.swift @@ -0,0 +1,35 @@ +/** public class ListNode { +* var val: Int +* var next: ListNode? +* init(_ x: Int) { +* self.val = x +* self.next = nil +* } +* } +*/ + +class Solution { + func partition(_ head: ListNode?, _ x: Int) -> ListNode? { + let leftDummy = ListNode(0) + let rightDummy = ListNode(0) + var left = leftDummy + var right = rightDummy + var head = head + + while let current = head { + if current.val < x { + left.next = current + left = left.next! + } else { + right.next = current + right = right.next! + } + head = head?.next + } + + right.next = nil + left.next = rightDummy.next + + return leftDummy.next + } +} \ No newline at end of file From 51492a3861ff1d8543a79bc20912f80c562991d9 Mon Sep 17 00:00:00 2001 From: klever34 Date: Thu, 18 Apr 2024 08:51:38 +0000 Subject: [PATCH 2/2] style: format code and docs with prettier --- lcci/02.04.Partition List/README.md | 6 +++--- lcci/02.04.Partition List/README_EN.md | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lcci/02.04.Partition List/README.md b/lcci/02.04.Partition List/README.md index ce5fb370400ac..a0094f6180ce9 100644 --- a/lcci/02.04.Partition List/README.md +++ b/lcci/02.04.Partition List/README.md @@ -219,7 +219,7 @@ class Solution { var left = leftDummy var right = rightDummy var head = head - + while let current = head { if current.val < x { left.next = current @@ -230,10 +230,10 @@ class Solution { } head = head?.next } - + right.next = nil left.next = rightDummy.next - + return leftDummy.next } } diff --git a/lcci/02.04.Partition List/README_EN.md b/lcci/02.04.Partition List/README_EN.md index d4392c7132b4b..385eb7d7e5946 100644 --- a/lcci/02.04.Partition List/README_EN.md +++ b/lcci/02.04.Partition List/README_EN.md @@ -197,7 +197,7 @@ class Solution { var left = leftDummy var right = rightDummy var head = head - + while let current = head { if current.val < x { left.next = current @@ -208,10 +208,10 @@ class Solution { } head = head?.next } - + right.next = nil left.next = rightDummy.next - + return leftDummy.next } }