题解 | #合并两个排序的链表#

合并两个排序的链表

http://www.nowcoder.com/practice/d8b6b4358f774294a89de2a6ac4d9337

其实做过了,不过这次不用首元结点解决的 差别不大,先判断出取哪一个作为第一个结点(以此代替首元结点)

/*
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 == nullptr || pHead2 == nullptr) {
         return pHead1 == nullptr ? pHead2 : pHead1;
      } 
      
      ListNode *head = pHead1->val < pHead2->val ? pHead1 : pHead2;
      ListNode *list1, *list2;
      list1 = head->next;
      list2 = head == pHead1 ? pHead2 : pHead1;
      ListNode *cur_head = head;
      
      while (list1 && list2) {
        if (list1->val < list2->val) {
          cur_head->next = list1;
          list1 = list1->next;
        } else {
          cur_head->next = list2;
          list2 = list2->next;
        }
        cur_head = cur_head->next;
      }
      
      cur_head->next = list1 == nullptr ? list2 : list1;
      
      return head;
    }
};
全部评论

相关推荐

03-18 17:22
门头沟学院 Java
代码飞升:海投就完了,别管评论区那个sbb卖课的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务