@@ -81570,7 +81570,7 @@ <h3 id="solution-1-fast-and-slow-pointers">Solution 1: Fast and Slow Pointers</h
81570
81570
<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>
81571
81571
<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>
81572
81572
<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>
81574
81574
<div class="tabbed-content">
81575
81575
<div class="tabbed-block">
81576
81576
<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
81927
81927
</code></pre></div></td></tr></table></div>
81928
81928
</div>
81929
81929
<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">
81930
81960
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span>
81931
81961
<span class="normal"> 2</span>
81932
81962
<span class="normal"> 3</span>
@@ -82009,52 +82039,34 @@ <h3 id="solution-1-fast-and-slow-pointers">Solution 1: Fast and Slow Pointers</h
82009
82039
<span class="normal">28</span>
82010
82040
<span class="normal">29</span>
82011
82041
<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>
82033
82053
<span class="x">class Solution {</span>
82034
82054
<span class="x"> /**</span>
82035
82055
<span class="x"> * @param ListNode $head</span>
82036
- <span class="x"> * @param int $n</span>
82056
+ <span class="x"> * @param Integer $n</span>
82037
82057
<span class="x"> * @return ListNode</span>
82038
82058
<span class="x"> */</span>
82039
-
82040
82059
<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>
82049
82064
<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>
82054
82068
<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>
82058
82070
<span class="x"> return $dummy->next;</span>
82059
82071
<span class="x"> }</span>
82060
82072
<span class="x">}</span>
@@ -82065,6 +82077,7 @@ <h3 id="solution-1-fast-and-slow-pointers">Solution 1: Fast and Slow Pointers</h
82065
82077
<!-- solution:end -->
82066
82078
82067
82079
<!-- problem:end -->
82080
+ <p>````</p>
82068
82081
82069
82082
82070
82083
0 commit comments