PAT(Basic Level) Practice : 1075 链表元素分类 (25分)

1075 链表元素分类 (25分)

测试点5运行超时

用哈希映射存储每个节点的数据和next指针

代码

#include <iostream>
#include <vector>
#include <string>
#include <cstdio>
//scanf printf防止超时
#include <algorithm>
//vector的sort
#include <sstream>
//转换
using namespace std;

#include<iomanip>
//精度

#include<cmath>
//round四舍五入取整


int address1[100000]={0};
int address2[100000]={0};
int main()
{
    int first,n,k;
    cin>>first>>n>>k;

    vector<int> points;
    for(int i=0;i<n;i++)
    {
        //point temp;
        int a,d,n;
        //cin>>a>>d>>n;
        scanf("%d %d %d",&a,&d,&n);
        address1[a]=d;
        address2[a]=n;
        points.push_back(a);
    }


    vector<int> res;
    int index=first;
    while(index!=-1)
    {

        if(address1[index]<0)
            res.push_back(index);
        index=address2[index];
    }
    index=first;
    while(index!=-1)
    {
        if(address1[index]>=0&&address1[index]<=k)
            res.push_back(index);
        index=address2[index];
    }
    index=first;
    while(index!=-1)
    {
        if(address1[index]>k)
            res.push_back(index);
        index=address2[index];
    }


    for(int i=0;i<res.size()-1;i++)
    {
        printf("%05d %d %05d\n",res[i],address1[res[i]],res[i+1]);
    }
    printf("%05d %d -1\n",res[res.size()-1],address1[res[res.size()-1]]);
    return 0;
}

posted @ 2020-09-30 18:27  韩天尊  阅读(96)  评论(0)    收藏  举报