3.剑指offer-合并两个有序的链表
来源:互联网 发布:图片软件排行 编辑:程序博客网 时间:2024/05/21 22:29
1.题目要求
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。要求辅助空间是
O(1)
2. 想法
假设两个链表的头指针分别是pHead1和pHead2.
基本想法是:用一个指针p指向合成链表的尾节点,p1指向pHead1链表中等待比较的节点,p2指向pHead2链表中等待比较的节点,那么每一次比较p1指向的节点和p2指向的节点的大小,继而决定谁先进入新合成的链表。
3.代码(只是部分代码)
/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: ListNode* Merge(ListNode* pHead1, ListNode* pHead2) { if(pHead1==NULL) return pHead2; if(pHead2==NULL) return pHead1; ListNode *p,*Head,*p1,*p2,*p3; if(pHead1->val<=pHead2->val){ Head=pHead1; p1=pHead1->next; p2=pHead2; p=Head; }else{ Head=pHead2; p1=pHead1; p2=pHead2->next; p=Head; } while(p1!=NULL && p2!=NULL){ if(p1->val<=p2->val){ p3=p1->next; p->next=p1; p1=p3; p=p->next; }else{ p3=p2->next; p->next=p2; p2=p3; p=p->next; } } if(p1==NULL){ p->next=p2; }else{ p->next=p1; } return Head; }};
0 0
- 3.剑指offer-合并两个有序的链表
- 剑指offer----合并两个有序链表
- 《剑指offer》合并两个有序链表
- 剑指offer-合并两个有序链表
- 【剑指offer】合并两个有序的链表
- 《剑指offer》合并两个有序的数组
- 剑指offer 面试题17 合并两个有序链表
- 剑指offer(8)-合并两个有序链表
- 剑指Offer---面试题17:合并两个有序链表
- 剑指offer--递归非递归合并两个有序链表
- 剑指offer面试题-合并两个有序链表
- 剑指offer刷题之c++实现的合并两个有序的链表
- 剑指offer系列之15:合并两个有序的链表
- 有序的合并两个有序链表
- 【面试题】剑指Offer-17-合并两个有序的单链表
- 剑指Offer-17-合并有序链表
- 剑指Offer——有序链表的合并
- 二叉树的镜像 (剑指offer)!!!(两个有序链表的合并,链表的逆置)
- Andriod Studio Genymotion启动报错
- AM335x启动流程(BootRom->MLO->Uboot)
- Mac 下实现rsync功能
- 是时候严肃对待利用未定义行为这件事了
- 基于Socket简单实现分离式控制三维场景
- 3.剑指offer-合并两个有序的链表
- Spring中,给静态变量初始化的问题
- 光学知识点
- Android 利用Gradle实现差异化构建
- Android Volley的简单使用
- apk发布渠道
- Some search result of float to int conversion
- SurfaceView基础
- React Native listview(学习) 和 Item 布局适配