• LeetCode OJ: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.

    注意题目要求合并的时候不能新建节点,直接使用原来的节点,比较简单,代码如下:

     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         if(l1 == NULL) return l2;
    13         if(l2 == NULL) return l1;
    14         ListNode * root = new ListNode(-1);
    15         ListNode * helper = root;
    16         while(l1!=NULL && l2!=NULL){
    17             if(l1->val <= l2->val)
    18                 root->next = l1, l1=l1->next;
    19             else if(l1->val > l2->val)
    20                 root->next = l2, l2=l2->next;
    21             root = root->next;
    22         }
    23         while(l1!=NULL){
    24             root->next = l1;
    25             l1 = l1->next;
    26             root = root->next; 
    27         }
    28         while(l2!=NULL){
    29             root->next = l2;
    30             l2 = l2->next;
    31             root = root->next; 
    32         }
    33         return helper->next;
    34     }
    35 };
     1 public class Solution {
     2     public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
     3         ListNode helper = new ListNode(0);
     4         ListNode ret = helper;
     5         if(l1 == null) return l2;
     6         if(l2 == null) return l1;
     7         while(l1 != null && l2 != null){
     8             if(l1.val < l2.val){
     9                 helper.next = l1;
    10                 l1 = l1.next;
    11             }else{
    12                 helper.next = l2;
    13                 l2 = l2.next;
    14             }
    15             helper = helper.next;
    16         }
    17         while(l1 != null){
    18             helper.next = l1;
    19             l1 = l1.next;
    20             helper = helper.next;
    21         }
    22         while(l2 != null){
    23             helper.next = l2;
    24             l2 = l2.next;
    25             helper = helper.next;
    26         }
    27         return ret.next;
    28     }
    29 }
  • 相关阅读:
    (三)openwrt主Makefile解析
    (二)我的Makefile学习冲动&&编译过程概述
    openwrt修改flash大小
    (一)openwrt源码目录概述
    git_sop 脚本使用说明
    Openwrt LuCI模块练习详细步骤
    openwrt简单ipk生成及Makefile解释
    oracle中比较两表表结构差异和数据差异的方法
    C#泛型集合之Dictionary<k, v>使用技巧
    SQL语句添加,删除主键
  • 原文地址:https://www.cnblogs.com/-wang-cheng/p/4934436.html
Copyright © 2020-2023  润新知