PAT 2-12. 两个有序链表序列的交集

来源:互联网 发布:eva结局 知乎 编辑:程序博客网 时间:2024/05/17 01:26

题目地址:http://pat.zju.edu.cn/contests/ds/2-12


很坑爹,看了http://blog.csdn.net/liygcheng/article/details/10813213博客中关于...A A...和...A A...的交集是A A而不是A而恍然大悟。不过笔者之前倒不是出错,是因为用set来接受输入,然后把set转化成vector(http://stackoverflow.com/questions/5034211/c-copy-set-to-vector),然后比较相邻vector中的元素是否相等,OJ给出的是超时,并不是出错,所以也没有想到交集是A A的问题,一直以为要优化。知道是交集A A的问题后,直接改了代码,最后一个case也通过了。


#include<cstdio>#include<vector>#include<algorithm>using namespace std;int main(){    int num;    vector<int> vec1, vec2;    vector<int> vec;    while(scanf("%d", &num) && num != -1)    {        vec1.push_back(num);    }    while(scanf("%d", &num) && num != -1)    {        vec2.push_back(num);    }    int p1 = 0, p2 = 0, cnt=0;    while(p1 != vec1.size() && p2 != vec2.size())    {        if(vec1.at(p1) < vec2.at(p2))        {            ++p1;        }        else if(vec1.at(p1) > vec2.at(p2))        {            ++p2;        }        else        {            cnt == 0 ? printf("%d", vec1.at(p1)) : printf(" %d", vec1.at(p1));            ++p1;            ++p2;            ++cnt;        }    }    if(!cnt)        printf("NULL");    printf("\n");    return 0;}