@@ -81570,7 +81570,7 @@ <h3 id="solution-1-fast-and-slow-pointers">Solution 1: Fast and Slow Pointers</h
8157081570<p>We define two pointers <code>fast</code> and <code>slow</code>, both initially pointing to the dummy head node of the linked list.</p>
8157181571<p>Next, the <code>fast</code> pointer moves forward $n$ steps first, then <code>fast</code> and <code>slow</code> pointers move forward together until the <code>fast</code> pointer reaches the end of the linked list. At this point, the node pointed to by <code>slow.next</code> is the predecessor of the $n$-th node from the end, and we can delete it.</p>
8157281572<p>The time complexity is $O(n)$, where $n$ is the length of the linked list. The space complexity is $O(1)$.</p>
81573- <div class="tabbed-set tabbed-alternate" data-tabs="1:9"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><input id="__tabbed_1_3" name="__tabbed_1" type="radio" /><input id="__tabbed_1_4" name="__tabbed_1" type="radio" /><input id="__tabbed_1_5" name="__tabbed_1" type="radio" /><input id="__tabbed_1_6" name="__tabbed_1" type="radio" /><input id="__tabbed_1_7" name="__tabbed_1" type="radio" /><input id="__tabbed_1_8" name="__tabbed_1" type="radio" /><input id="__tabbed_1_9" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">Python3</label><label for="__tabbed_1_2">Java</label><label for="__tabbed_1_3">C++</label><label for="__tabbed_1_4">Go</label><label for="__tabbed_1_5">TypeScript</label><label for="__tabbed_1_6">Rust</label><label for="__tabbed_1_7">JavaScript</label><label for="__tabbed_1_8">Ruby</label><label for="__tabbed_1_9">PHP</label></div>
81573+ <div class="tabbed-set tabbed-alternate" data-tabs="1:10"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><input id="__tabbed_1_3" name="__tabbed_1" type="radio" /><input id="__tabbed_1_4" name="__tabbed_1" type="radio" /><input id="__tabbed_1_5" name="__tabbed_1" type="radio" /><input id="__tabbed_1_6" name="__tabbed_1" type="radio" /><input id="__tabbed_1_7" name="__tabbed_1" type="radio" /><input id="__tabbed_1_8" name="__tabbed_1" type="radio" /><input id="__tabbed_1_9" name="__tabbed_1" type="radio" /><input id="__tabbed_1_10" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">Python3</label><label for="__tabbed_1_2">Java</label><label for="__tabbed_1_3">C++</label><label for="__tabbed_1_4">Go</label><label for="__tabbed_1_5">TypeScript</label><label for="__tabbed_1_6">Rust</label><label for="__tabbed_1_7">JavaScript</label><label for="__tabbed_1_8">None</label><label for="__tabbed_1_9">Ruby</label><label for="__tabbed_1_10">PHP</label></div>
8157481574<div class="tabbed-content">
8157581575<div class="tabbed-block">
8157681576<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span>
@@ -81927,6 +81927,36 @@ <h3 id="solution-1-fast-and-slow-pointers">Solution 1: Fast and Slow Pointers</h
8192781927</code></pre></div></td></tr></table></div>
8192881928</div>
8192981929<div class="tabbed-block">
81930+ <p><code>`swift linenums="1"
81931+ /**
81932+ * Definition for singly-linked list.
81933+ * public class ListNode {
81934+ * public var val: Int
81935+ * public var next: ListNode?
81936+ * public init() { self.val = 0; self.next = nil; }
81937+ * public init(_ val: Int) { self.val = val; self.next = nil; }
81938+ * public init(_ val: Int, _ next: ListNode?) { self.val = val; self.next = next; }
81939+ * }
81940+ */
81941+ class Solution {
81942+ func removeNthFromEnd(_ head: ListNode?, _ n: Int) -> ListNode? {
81943+ let dummy = ListNode(0)
81944+ dummy.next = head
81945+ var fast: ListNode? = dummy
81946+ var slow: ListNode? = dummy
81947+ for _ in 0..<n {
81948+ fast = fast?.next
81949+ }
81950+ while fast?.next != nil {
81951+ fast = fast?.next
81952+ slow = slow?.next
81953+ }
81954+ slow?.next = slow?.next?.next
81955+ return dummy.next
81956+ }
81957+ }</code></p>
81958+ </div>
81959+ <div class="tabbed-block">
8193081960<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span>
8193181961<span class="normal"> 2</span>
8193281962<span class="normal"> 3</span>
@@ -82009,52 +82039,34 @@ <h3 id="solution-1-fast-and-slow-pointers">Solution 1: Fast and Slow Pointers</h
8200982039<span class="normal">28</span>
8201082040<span class="normal">29</span>
8201182041<span class="normal">30</span>
82012- <span class="normal">31</span>
82013- <span class="normal">32</span>
82014- <span class="normal">33</span>
82015- <span class="normal">34</span>
82016- <span class="normal">35</span>
82017- <span class="normal">36</span>
82018- <span class="normal">37</span>
82019- <span class="normal">38</span>
82020- <span class="normal">39</span>
82021- <span class="normal">40</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="x"># Definition for singly-linked list.</span>
82022- <span class="x"># class ListNode {</span>
82023- <span class="x"># public $val;</span>
82024- <span class="x"># public $next;</span>
82025-
82026- <span class="x"># public function __construct($val = 0, $next = null)</span>
82027- <span class="x"># {</span>
82028- <span class="x"># $this->val = $val;</span>
82029- <span class="x"># $this->next = $next;</span>
82030- <span class="x"># }</span>
82031- <span class="x"># }</span>
82032-
82042+ <span class="normal">31</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="x">/**</span>
82043+ <span class="x"> * Definition for a singly-linked list.</span>
82044+ <span class="x"> * class ListNode {</span>
82045+ <span class="x"> * public $val = 0;</span>
82046+ <span class="x"> * public $next = null;</span>
82047+ <span class="x"> * function __construct($val = 0, $next = null) {</span>
82048+ <span class="x"> * $this->val = $val;</span>
82049+ <span class="x"> * $this->next = $next;</span>
82050+ <span class="x"> * }</span>
82051+ <span class="x"> * }</span>
82052+ <span class="x"> */</span>
8203382053<span class="x">class Solution {</span>
8203482054<span class="x"> /**</span>
8203582055<span class="x"> * @param ListNode $head</span>
82036- <span class="x"> * @param int $n</span>
82056+ <span class="x"> * @param Integer $n</span>
8203782057<span class="x"> * @return ListNode</span>
8203882058<span class="x"> */</span>
82039-
8204082059<span class="x"> function removeNthFromEnd($head, $n) {</span>
82041- <span class="x"> $dummy = new ListNode(0);</span>
82042- <span class="x"> $dummy->next = $head;</span>
82043-
82044- <span class="x"> $first = $dummy;</span>
82045- <span class="x"> $second = $dummy;</span>
82046-
82047- <span class="x"> for ($i = 0; $i <= $n; $i++) {</span>
82048- <span class="x"> $second = $second->next;</span>
82060+ <span class="x"> $dummy = new ListNode(0, $head);</span>
82061+ <span class="x"> $fast = $slow = $dummy;</span>
82062+ <span class="x"> for ($i = 0; $i < $n; $i++) {</span>
82063+ <span class="x"> $fast = $fast->next;</span>
8204982064<span class="x"> }</span>
82050-
82051- <span class="x"> while ($second != null) {</span>
82052- <span class="x"> $first = $first->next;</span>
82053- <span class="x"> $second = $second->next;</span>
82065+ <span class="x"> while ($fast->next !== null) {</span>
82066+ <span class="x"> $fast = $fast->next;</span>
82067+ <span class="x"> $slow = $slow->next;</span>
8205482068<span class="x"> }</span>
82055-
82056- <span class="x"> $first->next = $first->next->next;</span>
82057-
82069+ <span class="x"> $slow->next = $slow->next->next;</span>
8205882070<span class="x"> return $dummy->next;</span>
8205982071<span class="x"> }</span>
8206082072<span class="x">}</span>
@@ -82065,6 +82077,7 @@ <h3 id="solution-1-fast-and-slow-pointers">Solution 1: Fast and Slow Pointers</h
8206582077<!-- solution:end -->
8206682078
8206782079<!-- problem:end -->
82080+ <p>````</p>
8206882081
8206982082
8207082083
0 commit comments