• BM4 合并两个排序的链表


      

    思路:先选择最小的作为Head,每次从两个队列中取最小的挂到Head后面,如果一个合并空,后面直接挂。此外判断几个为空链表的情况

    1. /**
    2. * struct ListNode {
    3. * int val;
    4. * struct ListNode *next;
    5. * ListNode(int x) : val(x), next(nullptr) {}
    6. * };
    7. */
    8. class Solution {
    9. public:
    10. /**
    11. * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
    12. *
    13. *
    14. * @param pHead1 ListNode类
    15. * @param pHead2 ListNode类
    16. * @return ListNode类
    17. */
    18. ListNode* Merge(ListNode* pHead1, ListNode* pHead2) {
    19. // write code here
    20. //如果两个链表为空,则返回null值
    21. if(pHead1 == nullptr && pHead1 == nullptr)
    22. {
    23. return nullptr;
    24. }
    25. //如果两个链表中一个为空,一个为非空,则返回非空一个链表的链头
    26. if(pHead1 == nullptr && pHead1 != nullptr)
    27. {
    28. return pHead2;
    29. }
    30. if(pHead1 != nullptr && pHead2 == nullptr)
    31. {
    32. return pHead1;
    33. }
    34. ListNode* Head=nullptr;
    35. ListNode* cur1=pHead1;
    36. ListNode* cur2=pHead2;
    37. if(cur1->val<=cur2->val){
    38. //则head是pHead1
    39. Head=pHead1;
    40. cur1=cur1->next;
    41. }
    42. else if(cur1->val>cur2->val){
    43. //则head是pHead1
    44. Head=pHead2;
    45. cur2=cur2->next;
    46. }
    47. ListNode* Temp=Head;
    48. while(cur1!=nullptr&&cur2!=nullptr){
    49. //P1_f P1_r P2_f P2_r
    50. if(cur1->val<=cur2->val){
    51. //则head是pHead1
    52. Temp->next=cur1;
    53. Temp=Temp->next;
    54. cur1=cur1->next;
    55. }
    56. else if(cur1->val>cur2->val){
    57. //则head是pHead1
    58. Temp->next=cur2;
    59. Temp=Temp->next;
    60. cur2=cur2->next;
    61. }
    62. }
    63. while(cur1!=nullptr){
    64. Temp->next=cur1;
    65. Temp=Temp->next;
    66. cur1=cur1->next;
    67. }
    68. while(cur2!=nullptr){
    69. Temp->next=cur2;
    70. Temp=Temp->next;
    71. cur2=cur2->next;
    72. }
    73. return Head;
    74. }
    75. };

  • 相关阅读:
    useState 原理详解
    数据结构-----队列
    数据迁移工具,用这8种就够了!
    在 Android 上测试 Kotlin 协程
    前端基础建设与架构26 如何设计一个“万能”项目脚手架?
    C语言 栈和队列基本操作以及经典OJ题
    见证国内人工智能与机器人技术的进步
    flink操作hudi数据表
    opensql
    Linux 常用日期命令
  • 原文地址:https://blog.csdn.net/qq_26004051/article/details/133363292