zoukankan      html  css  js  c++  java
  • CCCC L2-002 链表去重

    链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805072641245184

    思路:模拟链表,开两个数组去分别保存去重后链表各节点地址以及被删除节点地址。结构体模拟原链表节点,结构体数组下标就是原链表各节点地址

    代码:

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 typedef long long ll;
     4 const int M = int(1e5) * 2 + 5;
     5 struct
     6 {
     7     int d, next;
     8 }a[M];
     9 int add1[M], ptr1 = 0;
    10 int add2[M], ptr2 = 0;
    11 int main()
    12 {
    13     int head, n;
    14     cin >> head >> n;
    15     for (int i = 0; i < n; i++)
    16     {
    17         int add;
    18         cin >> add;
    19         cin >> a[add].d >> a[add].next;
    20     }
    21 
    22 
    23     bool vis[M] = { 0 };
    24     int p = head;
    25     while (p != -1)
    26     {
    27         int num = abs(a[p].d);
    28         if (!vis[num])
    29         {
    30             vis[num] = 1;
    31             add1[ptr1++] = p;
    32         }
    33         else
    34         {
    35             add2[ptr2++] = p;
    36         }
    37         p = a[p].next;
    38     }
    39 
    40 
    41     printf("%05d", head);
    42     for (int i = 1; i < ptr1; i++)
    43     {
    44         printf(" %d %05d
    %05d", a[add1[i - 1]].d, add1[i], add1[i]);
    45     }
    46     printf(" %d -1
    ", a[add1[ptr1-1]].d);
    47     if (ptr2 > 0)
    48     {
    49         printf("%05d", add2[0]);
    50         for (int i = 1; i < ptr2; i++)
    51         {
    52             printf(" %d %05d
    %05d", a[add2[i - 1]].d, add2[i], add2[i]);
    53         }
    54         printf(" %d -1
    ", a[add2[ptr2 - 1]].d);
    55     }
    56     return 0;
    57 }

    备注:这也是一种很巧妙的链表实现方法,看到题解的时候被震惊到了

    ————————————————
    心里有光,哪儿都美
  • 相关阅读:
    【算法笔记】B1020 月饼
    JZOJ 3412. 【NOIP2013模拟】KC看星
    JZOJ 3517. 空间航行
    JZOJ 3515. 软件公司
    JZOJ 3514. 最小比例
    JZOJ 3490. 旅游(travel)
    luogu P3178 [HAOI2015]树上操作
    JZOJ 3427. 归途与征程
    JZOJ 3426. 封印一击
    JZOJ 3425. 能量获取
  • 原文地址:https://www.cnblogs.com/harutomimori/p/10539574.html
Copyright © 2011-2022 走看看