1 条题解
-
0
单向链表(Singly Linked List) 题解
思路分析
由于任意时刻表中所有数字均在 内且互不相同,直接用值作为下标开设
nxt[1000005]数组维护单向链表后继指针即可:插入1 x y令nxt[y] = nxt[x], nxt[x] = y;查询2 x输出nxt[x](表尾天然为0);删除3 x若nxt[x] != 0则令nxt[x] = nxt[nxt[x]]。单次操作 ,总时间复杂度 。参考代码
#include <iostream> using namespace std; const int MX = 1000005; int nxt[MX]; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int q; if (!(cin >> q)) return 0; for (int i = 0; i < q; ++i) { int op, x; cin >> op >> x; if (op == 1) { int y; cin >> y; nxt[y] = nxt[x]; nxt[x] = y; } else if (op == 2) { cout << nxt[x] << "\n"; } else { if (nxt[x] != 0) nxt[x] = nxt[nxt[x]]; } } return 0; }
- 1
信息
- ID
- 8530
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者