MakeLoveNotWar
本帖最后由 MakeLoveNotWar 于 2021-3-26 09:03 编辑


力扣的今日打卡题目竟然是昨天题目的弟弟

难度简单的题目一般都是考查基础知识,比较容易上手

那么题目如下:

-
传送门:题目链接在这里

这里分享下我的思路




Praecantatio
只有一行代码也看不懂

MakeLoveNotWar
深山里的一奇 发表于 2021-3-26 09:01
只有一行代码也看不懂

不是一行 论坛莫名其妙加了个标签 只能纯文本再编辑下去除才行

缤纷的烟火
我表示一脸懵逼

Cast1e
美好的早晨,打开论坛,浏览帖子

这是啥?

这又是啥?

逐渐崩溃...

关掉论坛......

xmdhs
确实很简单,但是 rust 用链表实在是太麻烦了,不用 unsafe 效率根本不高。

但是挺迷惑的,这样也能也能 0ms


  1. // Definition for singly-linked list.
  2. // #[derive(PartialEq, Eq, Clone, Debug)]
  3. // pub struct ListNode {
  4. //   pub val: i32,
  5. //   pub next: Option<Box<ListNode>>
  6. // }
  7. //
  8. // impl ListNode {
  9. //   #[inline]
  10. //   fn new(val: i32) -> Self {
  11. //     ListNode {
  12. //       next: None,
  13. //       val
  14. //     }
  15. //   }
  16. // }
  17. impl Solution {
  18. pub fn delete_duplicates(head: Option<Box<ListNode>>) -> Option<Box<ListNode>> {
  19.     if head.is_none() {
  20.         return head;
  21.     }
  22.     let temp = head.unwrap();
  23.     let mut l = ListNode::new(temp.val);

  24.     let mut head = Some(temp);
  25.     'f: loop {
  26.         if head.is_none() {
  27.             break;
  28.         }
  29.         let mut v = head.unwrap();
  30.         loop {
  31.             if v.next.is_none() {
  32.                 break 'f;
  33.             }
  34.             let next = v.next.unwrap();
  35.             if next.val != v.val {
  36.                 l.push(next.val);
  37.                 v = next;
  38.                 break;
  39.             }
  40.             v = next;
  41.         }
  42.         head = Some(v);
  43.     }
  44.     Some(Box::new(l))
  45. }


  46. }

  47. impl ListNode {
  48.     fn get_last<'a>(&'a mut self) -> &'a mut Self {
  49.         if let Some(ref mut x) = self.next {
  50.             return x.get_last();
  51.         }
  52.         self
  53.     }
  54.     fn set_next(&mut self, node: Self) {
  55.         self.next = Some(Box::new(node));
  56.     }
  57.     fn push(&mut self, elem: i32) {
  58.         let new_node = ListNode::new(elem);
  59.         self.get_last().set_next(new_node);
  60.     }
  61. }
复制代码


吃饱喝足去睡觉
只要是我看不懂的东西 都是高深的东西

Dahesor
唔......
好久没玩过力扣扣的题了

MakeLoveNotWar
xmdhs 发表于 2021-3-26 11:32
确实很简单,但是 rust 用链表实在是太麻烦了,不用 unsafe 效率根本不高。

但是挺迷惑的,这样也能也能 0 ...

一眼看去。。。这代码怎么这么长。。。。
0ms怎么做到的

xmdhs
MakeLoveNotWar 发表于 2021-3-26 13:44
一眼看去。。。这代码怎么这么长。。。。
0ms怎么做到的

速度快不奇怪,但是我写的效率应该很低才是,只能认为是编译器优化了吧。

解法就是创建一个新的链表,然后把传入的链表的第一个值放入,然后再循环链表,找到不一样的再插入。

插入链表的还是递归找到链表末尾再插入。。

主要是所有权这东西有点头疼。

huyast1111
非计算机相关专业,告辞!