Skip to content

Commit 2113995

Browse files
committed
Deploying to gh-pages from @ 7590d3f 🚀
1 parent fd5b8c0 commit 2113995

File tree

4 files changed

+88
-6
lines changed

4 files changed

+88
-6
lines changed

day3/lc203.html

Lines changed: 43 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -240,21 +240,62 @@ <h2 id="学习感想"><a class="header" href="#学习感想">学习感想</a></h
240240
pub fn remove_elements(head: Option&lt;Box&lt;ListNode&gt;&gt;, val: i32) -&gt; Option&lt;Box&lt;ListNode&gt;&gt; {
241241
let mut dummyHead = Box::new(ListNode::new(0));
242242
dummyHead.next = head;
243-
let mut cur = dummyHead.as_mut();
243+
let mut cur: &amp;mut ListNode = dummyHead.as_mut();
244244
// 使用take()替换std::men::replace(&amp;mut node.next, None)达到相同的效果,并且更普遍易读
245245
while let Some(nxt) = cur.next.take() {
246246
if nxt.val == val {
247247
cur.next = nxt.next;
248248
} else {
249249
cur.next = Some(nxt);
250-
cur = cur.next.as_mut().unwrap();
250+
cur = cur.next.as_mut().unwrap(); // coercion
251+
// ^ Option&lt;Box&lt;ListNode&gt;&gt;
252+
// ^ Option&lt;&amp;mut Box&lt;ListNode&gt;&gt;
253+
// ^ &amp;mut Box&lt;ListNode&gt;
254+
// deref coerce -&gt; &amp; mut ListNode
251255
}
252256
}
253257
dummyHead.next
254258
}
255259
}
256260
<span class="boring">}</span></code></pre></pre>
257261
<p>向这位老哥学习,使用take,管它用不用,先取下来再说。并且 先把option刨了</p>
262+
<pre><pre class="playground"><code class="language-rust"><span class="boring">#![allow(unused)]
263+
</span>
264+
<span class="boring">fn main() {
265+
</span><span class="boring">struct Solution {}
266+
</span><span class="boring">
267+
</span><span class="boring">// Definition for singly-linked list.
268+
</span><span class="boring">#[derive(PartialEq, Eq, Clone, Debug)]
269+
</span><span class="boring">pub struct ListNode {
270+
</span><span class="boring"> pub val: i32,
271+
</span><span class="boring"> pub next: Option&lt;Box&lt;ListNode&gt;&gt;
272+
</span><span class="boring">}
273+
</span><span class="boring">
274+
</span><span class="boring">impl ListNode {
275+
</span><span class="boring"> #[inline]
276+
</span><span class="boring"> fn new(val: i32) -&gt; Self {
277+
</span><span class="boring"> ListNode {
278+
</span><span class="boring"> next: None,
279+
</span><span class="boring"> val
280+
</span><span class="boring"> }
281+
</span><span class="boring"> }
282+
</span><span class="boring">}
283+
</span>
284+
impl Solution {
285+
pub fn remove_elements(mut head: Option&lt;Box&lt;ListNode&gt;&gt;, val: i32) -&gt; Option&lt;Box&lt;ListNode&gt;&gt; {
286+
let mut res: Option&lt;Box&lt;ListNode&gt;&gt; = None;
287+
let mut ptr: &amp;mut Option&lt;Box&lt;ListNode&gt;&gt; = &amp;mut res;
288+
while let Some(mut x) = head {
289+
head = x.next.take();
290+
if x.val != val {
291+
*ptr = Some(x);
292+
ptr = &amp;mut ptr.as_mut().unwrap().next;
293+
}
294+
}
295+
res
296+
}
297+
}
298+
<span class="boring">}</span></code></pre></pre>
258299

259300
</main>
260301

print.html

Lines changed: 43 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -853,21 +853,62 @@ <h2 id="学习感想-5"><a class="header" href="#学习感想-5">学习感想</a
853853
pub fn remove_elements(head: Option&lt;Box&lt;ListNode&gt;&gt;, val: i32) -&gt; Option&lt;Box&lt;ListNode&gt;&gt; {
854854
let mut dummyHead = Box::new(ListNode::new(0));
855855
dummyHead.next = head;
856-
let mut cur = dummyHead.as_mut();
856+
let mut cur: &amp;mut ListNode = dummyHead.as_mut();
857857
// 使用take()替换std::men::replace(&amp;mut node.next, None)达到相同的效果,并且更普遍易读
858858
while let Some(nxt) = cur.next.take() {
859859
if nxt.val == val {
860860
cur.next = nxt.next;
861861
} else {
862862
cur.next = Some(nxt);
863-
cur = cur.next.as_mut().unwrap();
863+
cur = cur.next.as_mut().unwrap(); // coercion
864+
// ^ Option&lt;Box&lt;ListNode&gt;&gt;
865+
// ^ Option&lt;&amp;mut Box&lt;ListNode&gt;&gt;
866+
// ^ &amp;mut Box&lt;ListNode&gt;
867+
// deref coerce -&gt; &amp; mut ListNode
864868
}
865869
}
866870
dummyHead.next
867871
}
868872
}
869873
<span class="boring">}</span></code></pre></pre>
870874
<p>向这位老哥学习,使用take,管它用不用,先取下来再说。并且 先把option刨了</p>
875+
<pre><pre class="playground"><code class="language-rust"><span class="boring">#![allow(unused)]
876+
</span>
877+
<span class="boring">fn main() {
878+
</span><span class="boring">struct Solution {}
879+
</span><span class="boring">
880+
</span><span class="boring">// Definition for singly-linked list.
881+
</span><span class="boring">#[derive(PartialEq, Eq, Clone, Debug)]
882+
</span><span class="boring">pub struct ListNode {
883+
</span><span class="boring"> pub val: i32,
884+
</span><span class="boring"> pub next: Option&lt;Box&lt;ListNode&gt;&gt;
885+
</span><span class="boring">}
886+
</span><span class="boring">
887+
</span><span class="boring">impl ListNode {
888+
</span><span class="boring"> #[inline]
889+
</span><span class="boring"> fn new(val: i32) -&gt; Self {
890+
</span><span class="boring"> ListNode {
891+
</span><span class="boring"> next: None,
892+
</span><span class="boring"> val
893+
</span><span class="boring"> }
894+
</span><span class="boring"> }
895+
</span><span class="boring">}
896+
</span>
897+
impl Solution {
898+
pub fn remove_elements(mut head: Option&lt;Box&lt;ListNode&gt;&gt;, val: i32) -&gt; Option&lt;Box&lt;ListNode&gt;&gt; {
899+
let mut res: Option&lt;Box&lt;ListNode&gt;&gt; = None;
900+
let mut ptr: &amp;mut Option&lt;Box&lt;ListNode&gt;&gt; = &amp;mut res;
901+
while let Some(mut x) = head {
902+
head = x.next.take();
903+
if x.val != val {
904+
*ptr = Some(x);
905+
ptr = &amp;mut ptr.as_mut().unwrap().next;
906+
}
907+
}
908+
res
909+
}
910+
}
911+
<span class="boring">}</span></code></pre></pre>
871912
<div style="break-before: page; page-break-before: always;"></div><h1 id="707-设计链表"><a class="header" href="#707-设计链表">707. 设计链表</a></h1>
872913
<h2 id="题目描述-6"><a class="header" href="#题目描述-6">题目描述</a></h2>
873914
<p>你可以选择使用单链表或者双链表,设计并实现自己的链表。</p>

searchindex.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

searchindex.json

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)