题目:问题描述
有n辆自行车依次来到停车棚,除了第一辆自行车外,每辆自行车都会恰好停放在已经在停车棚里的某辆自行车的左边或右边。(e.g.停车棚里已经有3辆自行车,从左到右编号为:3,5,1。现在编号为2的第4辆自行车要停在5号自行车的左边,所以现在停车棚里的自行车编号是:3,2,5,1)。给定n辆自行车的停放情况,按顺序输出最后停车棚里的自行车编号。
输入格式
第一行一个整数n。
第二行一个整数x。表示第一辆自行车的编号。
以下n-1行,每行3个整数x,y,z。
z=0时,表示编号为x的自行车恰停放在编号为y的自行车的左边
z=1时,表示编号为x的自行车恰停放在编号为y的自行车的右边
输出格式
从左到右输出停车棚里的自行车编号
样例输入
4
3
1 3 1
2 1 0
5 2 1
样例输出
3 2 5 1
数据规模和约定
n<=100000
自行车编号为不超过100000的正整数。
思路:题目简单,可以用链表,因为可能左插,也可能右插,所以可以用双向链表,但每次检索到底插在哪一个编号的自行车旁边浪费时间,可以用一个数组将对应编号的自行车的地址存储起来,将时间复杂度降到了o(n),否则的话时间会超出时间限制
#include <iostream>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#define maxnum 100005
using namespace std;
typedef struct node
{int data;struct node *prior,*next;
本文发布于:2024-01-31 17:46:33,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170669439330270.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |