ACM练习 链表排序 II 【WA】
注意:在OJ上提交时不要使用endl,可能会出问题。用\n
代替。
描述
已知
小 g 手里有一个链表。
小 g 希望手里的链表是按照单调非减的顺序排好的。
小 g 希望链表中值相同的节点在排完序后相对次序也不会改变。
小 g 很笨。
聪明的你快来帮帮小 g,实现他的愿望。
输入
第一行为两个整数,分别为小 g 的链表中节点的个数 N (0 ≤ N ≤ 100000),和第一个节点的编号 H (1 ≤ H ≤ N)。
接下来的 N 行中,第 i (1 ≤ i ≤ N) 行包含两个整数,分别为编号为 i 的节点的值 Ai (-10^9 ≤ Ai ≤ 10^9) 和它的下一个节点的编号 Bi (0 ≤ Bi ≤ N)。
约定链表中最后一个节点的下一个节点的编号用 0 表示,且空链表第一个节点编号用 0 表示。
输出
第一行为一个整数,为排序后的链表中第一个节点的编号。
接下来的 N 行中,第 i (1 ≤ i ≤ N) 行包含一个整数,为排序后的链表中编号 i 的节点的下一个节点的编号 Bi’ (0 ≤ Bi’ ≤ N)。
样例输入
3 2
2 3
3 1
1 0
样例输出
3
2
0
1
我的测试用例
20 1
20 2
19 3
18 4
17 5
16 6
15 7
14 8
13 9
12 10
11 11
11 12
11 13
11 14
11 15
11 16
11 17
11 18
11 19
11 20
11 0
输出结果(是对的吧)
10
0
1
2
3
4
5
6
7
8
11
12
13
14
15
16
17
18
19
20
9
代码
只通过了自己的测试用例,没通过OJ
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
class Node
{public:int num;int value;int next;
};int mysort(Node a1, Node a2)
{return(a1.value < a2.value);
}int main()
{int total, first;cin >> total >> first;//空链表检测if (total == 0){cout << '0';return 0;}//原链表vector<Node> linklist;Node tNode;int i;for (i = 0; i < total; i++){tNode.num = i + 1;cin >> tNode.value >> tNode.next;tNode.next = 0;//此数据无用置零linklist.push_back(tNode);}//复制vector<Node> resultlist(linklist);//排序stable_sort(linklist.begin(), linklist.end(), mysort);//填写int j;for (i = 0; i < total; i++){resultlist[linklist[i].num - 1].next = (i + 1 < total ? linklist[i + 1].num : 0);}//输出cout << linklist[0].num << endl;for (i = 0; i < total; i++){cout << resultlist[i].next << '\n';}cout << endl;system("pause");return 0;
}
ACM练习 链表排序 II 【WA】相关推荐
- 冒泡链表排序java_链表排序(冒泡、选择、插入、快排、归并、希尔、堆排序)...
以下排序算法的正确性都可以在LeetCode的链表排序这一题检测.本文用到的链表结构如下(排序算法都是传入链表头指针作为参数,返回排序后的头指针) struct ListNode { int val; ...
- 链表排序(冒泡、选择、插入、快排、归并、希尔、堆排序)
这篇文章分析一下链表的各种排序方法. 以下排序算法的正确性都可以在LeetCode的链表排序这一题检测.本文用到的链表结构如下(排序算法都是传入链表头指针作为参数,返回排序后的头指针) struct ...
- 单链表排序----快排 归并排序
单链表排序----快排 & 归并排序 原文:http://blog.csdn.net/u012658346/article/details/51141288 题目描述: 给定一个乱序的单链表 ...
- 链表排序(C语言)选择排序
#include <stdio.h> #include <stdlib.h> #include <time.h> //用到了time函数#define arrayS ...
- Lintcode 167. 链表求和 221. 链表求和 II 题解
167. 链表求和 描述 你有两个用链表代表的整数,其中每个节点包含一个数字.数字存储按照在原来整数中相反的顺序,使得第一个数字位于链表的开头.写出一个函数将两个整数相加,用链表形式返回和. 样例 给 ...
- 链表的各种操作实现 链表逆序 链表排序 有序链表归并 链表存在环的判定
链表的各种操作实现 链表逆序 链表排序 有序链表归并 链表存在环的判定 链表基本操作实现 c语言版本, 该程序在visual c++ 6.0上调试通过! 本人写该程序完全是为学习交流之用,还望大家多多 ...
- STL 中的链表排序
一直以来学习排序算法, 都没有在链表排序上下太多功夫,因为用得不多.最近看STL源码,才发现,原来即使是链表,也能有时间复杂度为O(nlogn)的算法, 大大出乎我的意料之外,一般就能想到个插入排序. ...
- leetcode 148 --- 链表排序
1 题目 链表排序 2 解法 2.1 冒泡排序 /*** struct ListNode {* int val;* struct ListNode *next;* };*/class Solution ...
- 一步一步写算法(之链表排序)
[ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 相比较线性表的排序而言,链表排序的内容稍微麻烦一点.一方面,你要考虑数据插入的步骤:另外一方面 ...
最新文章
- Activiti 笔记
- rbac 一个用户对应多个账号_电商后台系统:管理后台之账号管理(一)
- js返回上一页并刷新代码整理
- 个子矮s弯如何看点打方向图解_S弯如何看点打方向
- android 编译器有问题,Android Studio 3.0 Beta 2发布:解决编译器bug
- 惊呆了!这篇论文全文都是脏话,可编辑部居然对它评价极佳并发表了!
- 5月份,我居然发了这么多文章?我果然无聊.
- R_Studio模拟学生成绩对数据简单分析
- c语言误差椭圆,平差计算
- vmware 无法安装 (出现原因及解决办法)
- 使用srvany.exe把程序安装成windows服务
- Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day29】
- Python 用plt做动画
- 服务器中心地址,互联网时间同步服务器地址(国家授时中心服务器)
- 域环境批量推送OUTLOOK签名
- 怎么查找无线的dns服务器,无线找不到服务器dns地址
- 废土行动最新服务器机柜销售,《废土行动》避难所 你想要知道的信息我们一次都告诉你...
- 字节-测试开发-面试
- VLookup怎么用详细步骤?VLookup函数的使用方法及实例
- Spring中两种编程式事务管理