本帖最后由 MakeLoveNotWar 于 2021-3-26 09:03 编辑
只有一行代码也看不懂
我表示一脸懵逼
美好的早晨,打开论坛,浏览帖子
这是啥?
这又是啥?
逐渐崩溃...
关掉论坛......
这是啥?
这又是啥?
逐渐崩溃...
关掉论坛......
确实很简单,但是 rust 用链表实在是太麻烦了,不用 unsafe 效率根本不高。
但是挺迷惑的,这样也能也能 0ms
复制代码
但是挺迷惑的,这样也能也能 0ms
- // Definition for singly-linked list.
- // #[derive(PartialEq, Eq, Clone, Debug)]
- // pub struct ListNode {
- // pub val: i32,
- // pub next: Option<Box<ListNode>>
- // }
- //
- // impl ListNode {
- // #[inline]
- // fn new(val: i32) -> Self {
- // ListNode {
- // next: None,
- // val
- // }
- // }
- // }
- impl Solution {
- pub fn delete_duplicates(head: Option<Box<ListNode>>) -> Option<Box<ListNode>> {
- if head.is_none() {
- return head;
- }
- let temp = head.unwrap();
- let mut l = ListNode::new(temp.val);
- let mut head = Some(temp);
- 'f: loop {
- if head.is_none() {
- break;
- }
- let mut v = head.unwrap();
- loop {
- if v.next.is_none() {
- break 'f;
- }
- let next = v.next.unwrap();
- if next.val != v.val {
- l.push(next.val);
- v = next;
- break;
- }
- v = next;
- }
- head = Some(v);
- }
- Some(Box::new(l))
- }
- }
- impl ListNode {
- fn get_last<'a>(&'a mut self) -> &'a mut Self {
- if let Some(ref mut x) = self.next {
- return x.get_last();
- }
- self
- }
- fn set_next(&mut self, node: Self) {
- self.next = Some(Box::new(node));
- }
- fn push(&mut self, elem: i32) {
- let new_node = ListNode::new(elem);
- self.get_last().set_next(new_node);
- }
- }
只要是我看不懂的东西 都是高深的东西
唔......
好久没玩过力扣扣的题了
好久没玩过力扣扣的题了
xmdhs 发表于 2021-3-26 11:32
确实很简单,但是 rust 用链表实在是太麻烦了,不用 unsafe 效率根本不高。
但是挺迷惑的,这样也能也能 0 ...
一眼看去。。。这代码怎么这么长。。。。
0ms怎么做到的
MakeLoveNotWar 发表于 2021-3-26 13:44
一眼看去。。。这代码怎么这么长。。。。
0ms怎么做到的
速度快不奇怪,但是我写的效率应该很低才是,只能认为是编译器优化了吧。
解法就是创建一个新的链表,然后把传入的链表的第一个值放入,然后再循环链表,找到不一样的再插入。
插入链表的还是递归找到链表末尾再插入。。
主要是所有权这东西有点头疼。
非计算机相关专业,告辞!