@@ -86050,7 +86050,7 @@ <h3 id="solution-1-fast-and-slow-pointers">Solution 1: Fast and Slow Pointers</h
8605086050<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>
8605186051<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>
8605286052<p>The time complexity is $O(n)$, where $n$ is the length of the linked list. The space complexity is $O(1)$.</p>
86053- <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>
86053+ <div class="tabbed-set tabbed-alternate" data-tabs="1:11"><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" /><input id="__tabbed_1_11" 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">Swift</label><label for="__tabbed_1_9">Ruby</label><label for="__tabbed_1_10">C#</label><label for="__tabbed_1_11">PHP</label></div>
8605486054<div class="tabbed-content">
8605586055<div class="tabbed-block">
8605686056<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span>
@@ -86407,34 +86407,60 @@ <h3 id="solution-1-fast-and-slow-pointers">Solution 1: Fast and Slow Pointers</h
8640786407</code></pre></div></td></tr></table></div>
8640886408</div>
8640986409<div class="tabbed-block">
86410- <p><code>`swift linenums="1"
86411- /**
86412- * Definition for singly-linked list.
86413- * public class ListNode {
86414- * public var val: Int
86415- * public var next: ListNode?
86416- * public init() { self.val = 0; self.next = nil; }
86417- * public init(_ val: Int) { self.val = val; self.next = nil; }
86418- * public init(_ val: Int, _ next: ListNode?) { self.val = val; self.next = next; }
86419- * }
86420- */
86421- class Solution {
86422- func removeNthFromEnd(_ head: ListNode?, _ n: Int) -> ListNode? {
86423- let dummy = ListNode(0)
86424- dummy.next = head
86425- var fast: ListNode? = dummy
86426- var slow: ListNode? = dummy
86427- for _ in 0..<n {
86428- fast = fast?.next
86429- }
86430- while fast?.next != nil {
86431- fast = fast?.next
86432- slow = slow?.next
86433- }
86434- slow?.next = slow?.next?.next
86435- return dummy.next
86436- }
86437- }</code></p>
86410+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span>
86411+ <span class="normal"> 2</span>
86412+ <span class="normal"> 3</span>
86413+ <span class="normal"> 4</span>
86414+ <span class="normal"> 5</span>
86415+ <span class="normal"> 6</span>
86416+ <span class="normal"> 7</span>
86417+ <span class="normal"> 8</span>
86418+ <span class="normal"> 9</span>
86419+ <span class="normal">10</span>
86420+ <span class="normal">11</span>
86421+ <span class="normal">12</span>
86422+ <span class="normal">13</span>
86423+ <span class="normal">14</span>
86424+ <span class="normal">15</span>
86425+ <span class="normal">16</span>
86426+ <span class="normal">17</span>
86427+ <span class="normal">18</span>
86428+ <span class="normal">19</span>
86429+ <span class="normal">20</span>
86430+ <span class="normal">21</span>
86431+ <span class="normal">22</span>
86432+ <span class="normal">23</span>
86433+ <span class="normal">24</span>
86434+ <span class="normal">25</span>
86435+ <span class="normal">26</span>
86436+ <span class="normal">27</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="cm">/**</span>
86437+ <span class="cm"> * Definition for singly-linked list.</span>
86438+ <span class="cm"> * public class ListNode {</span>
86439+ <span class="cm"> * public var val: Int</span>
86440+ <span class="cm"> * public var next: ListNode?</span>
86441+ <span class="cm"> * public init() { self.val = 0; self.next = nil; }</span>
86442+ <span class="cm"> * public init(_ val: Int) { self.val = val; self.next = nil; }</span>
86443+ <span class="cm"> * public init(_ val: Int, _ next: ListNode?) { self.val = val; self.next = next; }</span>
86444+ <span class="cm"> * }</span>
86445+ <span class="cm"> */</span>
86446+ <span class="kd">class</span><span class="w"> </span><span class="nc">Solution</span><span class="w"> </span><span class="p">{</span>
86447+ <span class="w"> </span><span class="kd">func</span><span class="w"> </span><span class="nf">removeNthFromEnd</span><span class="p">(</span><span class="kc">_</span><span class="w"> </span><span class="n">head</span><span class="p">:</span><span class="w"> </span><span class="n">ListNode</span><span class="p">?,</span><span class="w"> </span><span class="kc">_</span><span class="w"> </span><span class="n">n</span><span class="p">:</span><span class="w"> </span><span class="nb">Int</span><span class="p">)</span><span class="w"> </span><span class="p">-></span><span class="w"> </span><span class="n">ListNode</span><span class="p">?</span><span class="w"> </span><span class="p">{</span>
86448+ <span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nv">dummy</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">ListNode</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
86449+ <span class="w"> </span><span class="n">dummy</span><span class="p">.</span><span class="n">next</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">head</span>
86450+ <span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nv">fast</span><span class="p">:</span><span class="w"> </span><span class="n">ListNode</span><span class="p">?</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">dummy</span>
86451+ <span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nv">slow</span><span class="p">:</span><span class="w"> </span><span class="n">ListNode</span><span class="p">?</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">dummy</span>
86452+ <span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="kc">_</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mf">0.</span><span class="p">.<</span><span class="n">n</span><span class="w"> </span><span class="p">{</span>
86453+ <span class="w"> </span><span class="n">fast</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">fast</span><span class="p">?.</span><span class="n">next</span>
86454+ <span class="w"> </span><span class="p">}</span>
86455+ <span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="n">fast</span><span class="p">?.</span><span class="n">next</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="kc">nil</span><span class="w"> </span><span class="p">{</span>
86456+ <span class="w"> </span><span class="n">fast</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">fast</span><span class="p">?.</span><span class="n">next</span>
86457+ <span class="w"> </span><span class="n">slow</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">slow</span><span class="p">?.</span><span class="n">next</span>
86458+ <span class="w"> </span><span class="p">}</span>
86459+ <span class="w"> </span><span class="n">slow</span><span class="p">?.</span><span class="n">next</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">slow</span><span class="p">?.</span><span class="n">next</span><span class="p">?.</span><span class="n">next</span>
86460+ <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">dummy</span><span class="p">.</span><span class="n">next</span>
86461+ <span class="w"> </span><span class="p">}</span>
86462+ <span class="p">}</span>
86463+ </code></pre></div></td></tr></table></div>
8643886464</div>
8643986465<div class="tabbed-block">
8644086466<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span>
@@ -86514,6 +86540,60 @@ <h3 id="solution-1-fast-and-slow-pointers">Solution 1: Fast and Slow Pointers</h
8651486540<span class="normal">23</span>
8651586541<span class="normal">24</span>
8651686542<span class="normal">25</span>
86543+ <span class="normal">26</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="cm">/**</span>
86544+ <span class="cm"> * Definition for singly-linked list.</span>
86545+ <span class="cm"> * public class ListNode {</span>
86546+ <span class="cm"> * public int val;</span>
86547+ <span class="cm"> * public ListNode next;</span>
86548+ <span class="cm"> * public ListNode(int val=0, ListNode next=null) {</span>
86549+ <span class="cm"> * this.val = val;</span>
86550+ <span class="cm"> * this.next = next;</span>
86551+ <span class="cm"> * }</span>
86552+ <span class="cm"> * }</span>
86553+ <span class="cm"> */</span>
86554+ <span class="k">public</span><span class="w"> </span><span class="k">class</span><span class="w"> </span><span class="nc">Solution</span><span class="w"> </span><span class="p">{</span>
86555+ <span class="w"> </span><span class="k">public</span><span class="w"> </span><span class="n">ListNode</span><span class="w"> </span><span class="nf">RemoveNthFromEnd</span><span class="p">(</span><span class="n">ListNode</span><span class="w"> </span><span class="n">head</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
86556+ <span class="w"> </span><span class="n">ListNode</span><span class="w"> </span><span class="n">dummy</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">ListNode</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="n">head</span><span class="p">);</span>
86557+ <span class="w"> </span><span class="n">ListNode</span><span class="w"> </span><span class="n">fast</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">dummy</span><span class="p">,</span><span class="w"> </span><span class="n">slow</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">dummy</span><span class="p">;</span>
86558+ <span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="n">n</span><span class="o">--</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
86559+ <span class="w"> </span><span class="n">fast</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">fast</span><span class="p">.</span><span class="n">next</span><span class="p">;</span>
86560+ <span class="w"> </span><span class="p">}</span>
86561+ <span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="n">fast</span><span class="p">.</span><span class="n">next</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="k">null</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
86562+ <span class="w"> </span><span class="n">slow</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">slow</span><span class="p">.</span><span class="n">next</span><span class="p">;</span>
86563+ <span class="w"> </span><span class="n">fast</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">fast</span><span class="p">.</span><span class="n">next</span><span class="p">;</span>
86564+ <span class="w"> </span><span class="p">}</span>
86565+ <span class="w"> </span><span class="n">slow</span><span class="p">.</span><span class="n">next</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">slow</span><span class="p">.</span><span class="n">next</span><span class="p">.</span><span class="n">next</span><span class="p">;</span>
86566+ <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">dummy</span><span class="p">.</span><span class="n">next</span><span class="p">;</span>
86567+ <span class="w"> </span><span class="p">}</span>
86568+ <span class="p">}</span>
86569+ </code></pre></div></td></tr></table></div>
86570+ </div>
86571+ <div class="tabbed-block">
86572+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span>
86573+ <span class="normal"> 2</span>
86574+ <span class="normal"> 3</span>
86575+ <span class="normal"> 4</span>
86576+ <span class="normal"> 5</span>
86577+ <span class="normal"> 6</span>
86578+ <span class="normal"> 7</span>
86579+ <span class="normal"> 8</span>
86580+ <span class="normal"> 9</span>
86581+ <span class="normal">10</span>
86582+ <span class="normal">11</span>
86583+ <span class="normal">12</span>
86584+ <span class="normal">13</span>
86585+ <span class="normal">14</span>
86586+ <span class="normal">15</span>
86587+ <span class="normal">16</span>
86588+ <span class="normal">17</span>
86589+ <span class="normal">18</span>
86590+ <span class="normal">19</span>
86591+ <span class="normal">20</span>
86592+ <span class="normal">21</span>
86593+ <span class="normal">22</span>
86594+ <span class="normal">23</span>
86595+ <span class="normal">24</span>
86596+ <span class="normal">25</span>
8651786597<span class="normal">26</span>
8651886598<span class="normal">27</span>
8651986599<span class="normal">28</span>
@@ -86557,7 +86637,6 @@ <h3 id="solution-1-fast-and-slow-pointers">Solution 1: Fast and Slow Pointers</h
8655786637<!-- solution:end -->
8655886638
8655986639<!-- problem:end -->
86560- <p>````</p>
8656186640
8656286641
8656386642
@@ -86586,6 +86665,11 @@ <h3 id="solution-1-fast-and-slow-pointers">Solution 1: Fast and Slow Pointers</h
8658686665
8658786666 <nav>
8658886667
86668+ <a href="https://github.com/djvelimir" class="md-author" title="@djvelimir">
86669+
86670+ <img src="https://avatars.githubusercontent.com/u/20823832?v=4&size=72" alt="djvelimir">
86671+ </a>
86672+
8658986673 <a href="https://github.com/yanglbme" class="md-author" title="@yanglbme">
8659086674
8659186675 <img src="https://avatars.githubusercontent.com/u/21008209?v=4&size=72" alt="yanglbme">
0 commit comments