首页 > 学院 > 开发设计 > 正文

打印两个链表的公共值练习

2019-11-08 00:50:16
字体:
来源:转载
供稿:网友

现有两个升序链表,且链表中均无重复元素。请设计一个高效的算法,打印两个链表的公共值部分。 给定两个链表的头指针headA和headB,请返回一个vector,元素为两个链表的公共部分。请保证返回数组的升序。两个链表的元素个数均小于等于500。保证一定有公共值 测试样例: {1,2,3,4,5,6,7},{2,4,6,8,10} 返回:[2.4.6]

这个题目很简单,因为两个链表是排序的,所以可以直接用两个指针进行比较。

/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) {}};*/class Common {public: vector<int> findCommonParts(ListNode* headA, ListNode* headB) { vector<int> res; ListNode* PReheadA=new ListNode(0); preheadA->next=headA; ListNode* preheadB=new ListNode(0); preheadB->next=headB; while(headA&&headB){ if(headA->val==headB->val) { res.push_back(headA->val); headA=headA->next; headB=headB->next; } else if(headA->val>headB->val) { headB=headB->next; } else { headA=headA->next; } } return res; }};
上一篇:17-02-10

下一篇:bzoj3779 lct+线段树+dfs序

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表