@@ -12053,18 +12053,18 @@
12053
12053
<ul class="md-nav__list">
12054
12054
12055
12055
<li class="md-nav__item">
12056
- <a href="#solution-1" class="md-nav__link">
12056
+ <a href="#solution-1-head-insertion-method " class="md-nav__link">
12057
12057
<span class="md-ellipsis">
12058
- Solution 1
12058
+ Solution 1: Head Insertion Method
12059
12059
</span>
12060
12060
</a>
12061
12061
12062
12062
</li>
12063
12063
12064
12064
<li class="md-nav__item">
12065
- <a href="#solution-2" class="md-nav__link">
12065
+ <a href="#solution-2-recursion " class="md-nav__link">
12066
12066
<span class="md-ellipsis">
12067
- Solution 2
12067
+ Solution 2: Recursion
12068
12068
</span>
12069
12069
</a>
12070
12070
@@ -87165,7 +87165,9 @@ <h2 id="description">Description</h2>
87165
87165
<h2 id="solutions">Solutions</h2>
87166
87166
<!-- solution:start -->
87167
87167
87168
- <h3 id="solution-1">Solution 1</h3>
87168
+ <h3 id="solution-1-head-insertion-method">Solution 1: Head Insertion Method</h3>
87169
+ <p>We create a dummy node <span class="arithmatex">\(\textit{dummy}\)</span>, then traverse the linked list and insert each node after the <span class="arithmatex">\(\textit{dummy}\)</span> node. After traversal, return <span class="arithmatex">\(\textit{dummy.next}\)</span>.</p>
87170
+ <p>The time complexity is <span class="arithmatex">\(O(n)\)</span>, where <span class="arithmatex">\(n\)</span> is the length of the linked list. The space complexity is <span class="arithmatex">\(O(1)\)</span>.</p>
87169
87171
<div class="tabbed-set tabbed-alternate" data-tabs="1:8"><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" /><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">C#</label></div>
87170
87172
<div class="tabbed-content">
87171
87173
<div class="tabbed-block">
@@ -87529,15 +87531,15 @@ <h3 id="solution-1">Solution 1</h3>
87529
87531
<span class="cm"> */</span>
87530
87532
<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>
87531
87533
<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">ReverseList</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="p">{</span>
87532
- <span class="w"> </span><span class="n">ListNode</span><span class="w"> </span><span class="n">pre </span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">null </span><span class="p">;</span>
87533
- <span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class=" n">ListNode</span><span class="w"> </span><span class="n">p </span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">head</span><span class="p">;</span><span class="w"> </span><span class="n">p</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="k">null</span><span class="p">;) </span>
87534
- <span class="w"> </span><span class="p">{</span>
87535
- <span class="w"> </span><span class="n">ListNode</span><span class="w"> </span><span class="n">t </span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">p </span><span class="p">.</span><span class="n">next</span><span class="p">;</span>
87536
- <span class="w"> </span><span class="n">p </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">pre </span><span class="p">;</span>
87537
- <span class="w"> </span><span class="n">pre </span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">p </span><span class="p">;</span>
87538
- <span class="w"> </span><span class="n">p </span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">t </span><span class="p">;</span>
87534
+ <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>
87535
+ <span class="w"> </span><span class="n">ListNode</span><span class="w"> </span><span class="n">curr </span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">head</span><span class="p">;</span>
87536
+ <span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="n">curr</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>
87537
+ <span class="w"> </span><span class="n">ListNode</span><span class="w"> </span><span class="n">next </span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">curr </span><span class="p">.</span><span class="n">next</span><span class="p">;</span>
87538
+ <span class="w"> </span><span class="n">curr </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">dummy</span><span class="p">.</span><span class="n">next </span><span class="p">;</span>
87539
+ <span class="w"> </span><span class="n">dummy </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">curr </span><span class="p">;</span>
87540
+ <span class="w"> </span><span class="n">curr </span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">next </span><span class="p">;</span>
87539
87541
<span class="w"> </span><span class="p">}</span>
87540
- <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">pre </span><span class="p">;</span>
87542
+ <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>
87541
87543
<span class="w"> </span><span class="p">}</span>
87542
87544
<span class="p">}</span>
87543
87545
</code></pre></div></td></tr></table></div>
@@ -87548,8 +87550,10 @@ <h3 id="solution-1">Solution 1</h3>
87548
87550
87549
87551
<!-- solution:start -->
87550
87552
87551
- <h3 id="solution-2">Solution 2</h3>
87552
- <div class="tabbed-set tabbed-alternate" data-tabs="2:6"><input checked="checked" id="__tabbed_2_1" name="__tabbed_2" type="radio" /><input id="__tabbed_2_2" name="__tabbed_2" type="radio" /><input id="__tabbed_2_3" name="__tabbed_2" type="radio" /><input id="__tabbed_2_4" name="__tabbed_2" type="radio" /><input id="__tabbed_2_5" name="__tabbed_2" type="radio" /><input id="__tabbed_2_6" name="__tabbed_2" type="radio" /><div class="tabbed-labels"><label for="__tabbed_2_1">Python3</label><label for="__tabbed_2_2">Java</label><label for="__tabbed_2_3">C++</label><label for="__tabbed_2_4">Go</label><label for="__tabbed_2_5">TypeScript</label><label for="__tabbed_2_6">Rust</label></div>
87553
+ <h3 id="solution-2-recursion">Solution 2: Recursion</h3>
87554
+ <p>We recursively reverse all nodes from the second node to the end of the list, then attach the <span class="arithmatex">\(head\)</span> to the end of the reversed list.</p>
87555
+ <p>The time complexity is <span class="arithmatex">\(O(n)\)</span>, and the space complexity is <span class="arithmatex">\(O(n)\)</span>. Where <span class="arithmatex">\(n\)</span> is the length of the linked list.</p>
87556
+ <div class="tabbed-set tabbed-alternate" data-tabs="2:7"><input checked="checked" id="__tabbed_2_1" name="__tabbed_2" type="radio" /><input id="__tabbed_2_2" name="__tabbed_2" type="radio" /><input id="__tabbed_2_3" name="__tabbed_2" type="radio" /><input id="__tabbed_2_4" name="__tabbed_2" type="radio" /><input id="__tabbed_2_5" name="__tabbed_2" type="radio" /><input id="__tabbed_2_6" name="__tabbed_2" type="radio" /><input id="__tabbed_2_7" name="__tabbed_2" type="radio" /><div class="tabbed-labels"><label for="__tabbed_2_1">Python3</label><label for="__tabbed_2_2">Java</label><label for="__tabbed_2_3">C++</label><label for="__tabbed_2_4">Go</label><label for="__tabbed_2_5">TypeScript</label><label for="__tabbed_2_6">Rust</label><label for="__tabbed_2_7">C#</label></div>
87553
87557
<div class="tabbed-content">
87554
87558
<div class="tabbed-block">
87555
87559
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span>
@@ -87823,6 +87827,52 @@ <h3 id="solution-2">Solution 2</h3>
87823
87827
<span class="p">}</span>
87824
87828
</code></pre></div></td></tr></table></div>
87825
87829
</div>
87830
+ <div class="tabbed-block">
87831
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span>
87832
+ <span class="normal"> 2</span>
87833
+ <span class="normal"> 3</span>
87834
+ <span class="normal"> 4</span>
87835
+ <span class="normal"> 5</span>
87836
+ <span class="normal"> 6</span>
87837
+ <span class="normal"> 7</span>
87838
+ <span class="normal"> 8</span>
87839
+ <span class="normal"> 9</span>
87840
+ <span class="normal">10</span>
87841
+ <span class="normal">11</span>
87842
+ <span class="normal">12</span>
87843
+ <span class="normal">13</span>
87844
+ <span class="normal">14</span>
87845
+ <span class="normal">15</span>
87846
+ <span class="normal">16</span>
87847
+ <span class="normal">17</span>
87848
+ <span class="normal">18</span>
87849
+ <span class="normal">19</span>
87850
+ <span class="normal">20</span>
87851
+ <span class="normal">21</span>
87852
+ <span class="normal">22</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="cm">/**</span>
87853
+ <span class="cm"> * Definition for singly-linked list.</span>
87854
+ <span class="cm"> * public class ListNode {</span>
87855
+ <span class="cm"> * public int val;</span>
87856
+ <span class="cm"> * public ListNode next;</span>
87857
+ <span class="cm"> * public ListNode(int val=0, ListNode next=null) {</span>
87858
+ <span class="cm"> * this.val = val;</span>
87859
+ <span class="cm"> * this.next = next;</span>
87860
+ <span class="cm"> * }</span>
87861
+ <span class="cm"> * }</span>
87862
+ <span class="cm"> */</span>
87863
+ <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>
87864
+ <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">ReverseList</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="p">{</span>
87865
+ <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">head</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="k">null</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="n">head</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>
87866
+ <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">head</span><span class="p">;</span>
87867
+ <span class="w"> </span><span class="p">}</span>
87868
+ <span class="w"> </span><span class="n">ListNode</span><span class="w"> </span><span class="n">ans</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ReverseList</span><span class="p">(</span><span class="n">head</span><span class="p">.</span><span class="n">next</span><span class="p">);</span>
87869
+ <span class="w"> </span><span class="n">head</span><span class="p">.</span><span class="n">next</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">head</span><span class="p">;</span>
87870
+ <span class="w"> </span><span class="n">head</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>
87871
+ <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ans</span><span class="p">;</span>
87872
+ <span class="w"> </span><span class="p">}</span>
87873
+ <span class="p">}</span>
87874
+ </code></pre></div></td></tr></table></div>
87875
+ </div>
87826
87876
</div>
87827
87877
</div>
87828
87878
<!-- solution:end -->
0 commit comments