• 数据结构 merge_link合并链表


    问题描述

    本题任务是维护一条非递减的链表,初始长度为 0,记这条链表为主链表。
    对主链表做 N 次操作,操作分两种:
    1 k a1 a2 … ak,表示一条长度为 k 且非递减的链表,需要将这条链表合并到
    主链表上,保持合并后的链表仍然是非递减的。
    2 x,表示删除主链表中所有值为 x 的节点, 不保证链表中存在 x
    最后按非递减顺序输出主链表。


    ★数据输入
    第一行为数据 N,表示操作次数。
    接下来 N 行,每行为 1 k a1 a2 … ak 2 x
    数据保证:
    80%的数据, N <= 1000, Σk <= 1000
    100%的数据, N <= 100000, Σk <= 100000, 0 <= a[i] <= 1000000000


    ★数据输出
    一行输出主链表, 数据保证最后主链表包含至少一个元素。

    输入示例 输出示例
    3
    1 4 1 2 2 3
    2 2
    1 2 0 4
    0 1 3 4


    思路

      要插入的数存一数组,要删除的数放另一数组,排序,按顺序判断,得到未删除的元素并输出

    code

     1 #include <stdio.h>
     2 #include <iostream>
     3 using namespace std;
     4 #include <algorithm>
     5 #include <vector>
     6 
     7 int main()
     8 {
     9     int i,j,u;
    10     int n;
    11     int op,num,buf;
    12     vector<int> vec;
    13     vector<int> era;
    14 
    15     scanf("%d",&n);
    16     for(i=0;i<n;i++)
    17     {    
    18         scanf("%d %d",&op,&num);
    19         if(op==1)
    20         {
    21             for(j=0;j<num;j++)
    22             {
    23                 scanf("%d",&buf);
    24                 vec.push_back(buf);
    25             }
    26         }
    27         else // op==2
    28         {
    29             era.push_back(num);
    30         }
    31     }
    32     sort(vec.begin(),vec.end());
    33     sort(era.begin(),era.end());
    34     for(i=0,j=0; i<vec.size(); )
    35     {
    36         if(j==era.size())
    37         {
    38             printf("%d ",vec[i++]);
    39         }
    40         else if(vec[i] < era[j])
    41         {
    42             printf("%d ",vec[i++]);
    43         }
    44         else if(vec[i]==era[j])
    45         {
    46             i++;
    47         }
    48         else if(vec[i] > era[j])
    49         {
    50             j++;
    51         }
    52         else
    53         {
    54             printf("error
    ");
    55         }
    56     }
    57 
    58 
    59     return 0;
    60 }
  • 相关阅读:
    mysql存储过程 --游标的使用 取每行记录 (多字段)
    mysql rowid实现
    redis进程守护脚本
    CF1042B 【Vitamins】(去重,状压搜索)
    CF1042A 【Benches】(优先队列)
    魔板 Magic Squares(广搜,状态转化)
    解方程(hash,秦九韶算法)
    noip模拟赛 动态仙人掌(并查集,贪心)
    (暴力碾标算)NOIP模拟赛 宗教仪式
    牛客网NOIP赛前集训营-提高组18/9/9 A-中位数
  • 原文地址:https://www.cnblogs.com/cbattle/p/7733525.html
Copyright © 2020-2023  润新知