@@ -86050,7 +86050,7 @@ <h3 id="solution-1-fast-and-slow-pointers">Solution 1: Fast and Slow Pointers</h
86050
86050
<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>
86051
86051
<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>
86052
86052
<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>
86054
86054
<div class="tabbed-content">
86055
86055
<div class="tabbed-block">
86056
86056
<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
86407
86407
</code></pre></div></td></tr></table></div>
86408
86408
</div>
86409
86409
<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>
86438
86464
</div>
86439
86465
<div class="tabbed-block">
86440
86466
<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
86514
86540
<span class="normal">23</span>
86515
86541
<span class="normal">24</span>
86516
86542
<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>
86517
86597
<span class="normal">26</span>
86518
86598
<span class="normal">27</span>
86519
86599
<span class="normal">28</span>
@@ -86557,7 +86637,6 @@ <h3 id="solution-1-fast-and-slow-pointers">Solution 1: Fast and Slow Pointers</h
86557
86637
<!-- solution:end -->
86558
86638
86559
86639
<!-- problem:end -->
86560
- <p>````</p>
86561
86640
86562
86641
86563
86642
@@ -86586,6 +86665,11 @@ <h3 id="solution-1-fast-and-slow-pointers">Solution 1: Fast and Slow Pointers</h
86586
86665
86587
86666
<nav>
86588
86667
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
+
86589
86673
<a href="https://github.com/yanglbme" class="md-author" title="@yanglbme">
86590
86674
86591
86675
<img src="https://avatars.githubusercontent.com/u/21008209?v=4&size=72" alt="yanglbme">
0 commit comments