21. Merge Two Sorted Lists。
来源:互联网 发布:和重庆网络广播电视台 编辑:程序博客网 时间:2024/06/05 20:51
Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.
给两条链表让给融合起来,给定的链表是排序过得,所以融合之后的也是排序的。我的思路就是用三个指针,其中两个指针(p1、p2)分别指向两条指针,另一个指针(tail)用来标记新融合的链表的最后一个节点。然后从第一个结点开始比较,如果p1(第一个链表)比p2(第二个链表)的数值小就让tail指向p1,反之则指向p2。然后当一条链表遍历完的时候,剩下另一条链表全部直接加到新链表中即可。这样就可以在不用创建新的节点情况下融合完两条链表。
#include <iostream>using namespace std;struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {}};class Solution {public: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { ListNode* p1 = l1;//用来指向l1 ListNode* p2 = l2;//用来指向l2 ListNode* tail;//用来表示当前最后一个节点 int flag;//用来标记第一个数值谁大谁小,用来最后确定返回值。 if(!p1) {//如果l1为空,直接返回l2 return p2; } else if(!p2) {//l2为空,返回l1 return p1; } else { if(p1->val<=p2->val) {//比较第一个节点的大小。 tail = p1; p1 = p1->next; flag = 1; } else { tail = p2; p2 = p2->next; flag = 2; } while(p1 && p2) { if(p1->val <= p2->val) {//如果p1的数比p2的小,让tail指向p1,并且继续遍历。 tail->next = p1; tail = p1; p1 = p1->next; } else {//如果p2比p1的数小,tail指向这里 tail->next = p2; tail = p2; p2 = p2->next; } } if(!p1) {//如果此时p1指向空了,直接将p2剩下的内容连接到节点上. tail->next = p2; } else if(!p2) { tail->next = p1; } } if(flag == 1) { return l1; } else { return l2; } }};int main() { Solution s; ListNode node1(1); ListNode node2(1); ListNode node3(2); ListNode node4(3); node1.next = &node2; node3.next = &node4; ListNode * p = s.mergeTwoLists(&node1,&node3); while(p) { cout << p->val; p = p->next; }}
阅读全文
0 0
- 21.Merge Two Sorted Lists
- 21. Merge Two Sorted Lists
- 21. Merge Two Sorted Lists
- 21. Merge Two Sorted Lists
- 21. Merge Two Sorted Lists
- 21. Merge Two Sorted Lists
- 21.Merge Two Sorted Lists
- 21. Merge Two Sorted Lists
- 21. Merge Two Sorted Lists
- 21. Merge Two Sorted Lists
- 21. Merge Two Sorted Lists
- 21. Merge Two Sorted Lists
- 21. Merge Two Sorted Lists
- 21. Merge Two Sorted Lists
- 21. Merge Two Sorted Lists
- 21. Merge Two Sorted Lists
- 21. Merge Two Sorted Lists
- 21. Merge Two Sorted Lists
- (作业)Date、String、文件、URL
- 2017-2018SDUT个人训练赛第四场总结:我们愿意用更大的努力去换取更大的成功
- 系统性能优化总结—数据库设计
- 【笔记】《WebGL编程指南》学习-第2章WebGL入门(3-画一个点-版本1))
- Android RuntimePermissions运行时权限:单个运行时权限申请简例
- 21. Merge Two Sorted Lists。
- 整理Python find()、Python index()和Python List index()
- HDU 4614 Vases and Flowers
- spring的简单配置使用
- 字段类型与合理的选择字段类型
- 在Linux环境下面搭建 UNIX 环境高级编程(第三版) 的代码编译环境
- 【go 指针数组】go语言中的指针数组
- 《C++ Primer》读书笔记第九章-3-额外的string操作 And 容器适配器
- 进制数转换