zoukankan      html  css  js  c++  java
  • [LeetCode] Merge Two Sorted Lists

    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.

    维护一个新的链表,用两个指针指向两个链表,类似merge sot的比较。

     1 /**
     2  * Definition for singly-linked list.
     3  * struct ListNode {
     4  *     int val;
     5  *     ListNode *next;
     6  *     ListNode(int x) : val(x), next(NULL) {}
     7  * };
     8  */
     9 class Solution {
    10 public:
    11     ListNode *mergeTwoLists(ListNode *l1, ListNode *l2) {
    12         // Start typing your C/C++ solution below
    13         // DO NOT write int main() function
    14         if (l1 == NULL)
    15             return l2;
    16             
    17         if (l2 == NULL)
    18             return l1;
    19             
    20         ListNode *p = l1;
    21         ListNode *q = l2;
    22         ListNode *head = NULL;
    23         ListNode *curNode = NULL;
    24         
    25         while(p && q)
    26         {
    27             if (head == NULL)
    28             {
    29                 if (p->val < q->val)
    30                 {
    31                     head = curNode = p;
    32                     p = p->next;
    33                     curNode->next = NULL;
    34                 }
    35                 else
    36                 {
    37                     head = curNode = q;
    38                     q = q->next;
    39                     curNode->next = NULL;
    40                 }
    41             }
    42             else
    43             {
    44                 if (p->val < q->val)
    45                 {
    46                     curNode->next = p;
    47                     curNode = p;
    48                     p = p->next;
    49                     curNode->next = NULL;
    50                 }
    51                 else
    52                 {
    53                     curNode->next = q;
    54                     curNode = q;
    55                     q = q->next;
    56                     curNode->next = NULL;
    57                 }
    58             }
    59         }
    60         
    61         if (p)
    62             curNode->next = p;
    63         else if (q)
    64             curNode->next = q;
    65             
    66         return head;       
    67     }
    68 };
  • 相关阅读:
    工厂模式
    Bootstrap 日历
    处理乱码
    Eclipse常用快捷键
    C#_XML与Object转换
    jQuery选择函数
    Bootstrap如何正确引用字体图标
    js上拉加载、下拉刷新的插件
    js通用对象数组冒牌排序
    关于js跨域
  • 原文地址:https://www.cnblogs.com/chkkch/p/2772964.html
Copyright © 2011-2022 走看看