• LeetCode


    Description

    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.

    Difficulty

    Solution

    Idea

    由于两个列表已排好序,因此可以设置两个下标i,j,分别指向l1和l2的首节点,再从头到尾分别比较两个列表当前下标对应的元素的大小关系,接着存到新列表(注意,这里题干要求“return it as a new list”)。需要留意两个列表的长度不一致的情况。

    python

     1 # Definition for singly-linked list.
     2 # class ListNode(object):
     3 #     def __init__(self, x):
     4 #         self.val = x
     5 #         self.next = None
     6 
     7 class Solution(object):
     8     def mergeTwoLists(self, l1, l2):
     9         """
    10         :type l1: ListNode
    11         :type l2: ListNode
    12         :rtype: ListNode
    13         """
    14         if l1 == None and l2 == None:
    15             return None
    16 
    17         result = ListNode(-1)
    18         result_cur = result
    19 
    20         ptr1 = l1
    21         ptr2 = l2
    22 
    23         while ptr1 and ptr2:
    24             if ptr1.val <= ptr2.val:
    25                 new_node = ListNode(ptr1.val)
    26                 result_cur.next = new_node
    27                 ptr1 = ptr1.next
    28             else:
    29                 new_node = ListNode(ptr2.val)
    30                 result_cur.next = new_node
    31                 ptr2 = ptr2.next
    32 
    33             result_cur = result_cur.next
    34 
    35         while ptr1:
    36             new_node = ListNode(ptr1.val)
    37             result_cur.next = new_node
    38             result_cur = result_cur.next
    39             ptr1 = ptr1.next
    40 
    41         while ptr2:
    42             new_node = ListNode(ptr2.val)
    43             result_cur.next = new_node
    44             result_cur = result_cur.next
    45             ptr2 = ptr2.next
    46 
    47         return result.next
    View Code

    cpp

     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 && l2==NULL)
    13         {
    14             return NULL;
    15         }
    16         ListNode* ptr1 = l1;
    17         ListNode* ptr2 = l2;
    18         ListNode* result = new ListNode(-1);
    19         ListNode* result_cur = result;
    20 
    21         while (ptr1 && ptr2)
    22         {
    23             if (ptr1->val <= ptr2->val)
    24             {
    25                 result_cur->next = new ListNode(ptr1->val);;
    26                 ptr1 = ptr1->next;
    27             }else
    28             {
    29                 result_cur->next = new ListNode(ptr2->val);
    30                 ptr2 = ptr2->next;
    31             }
    32             result_cur = result_cur->next;
    33         }
    34         while (ptr1)
    35         {
    36             result_cur->next = new ListNode(ptr1->val);
    37             result_cur = result_cur->next;
    38             ptr1 = ptr1->next;
    39         }
    40         while (ptr2)
    41         {
    42             result_cur->next = new ListNode(ptr2->val);;
    43             result_cur = result_cur->next;
    44             ptr2 = ptr2->next;
    45         }
    46 
    47         return result->next;
    48     }
    49 };
    View Code
     
  • 相关阅读:
    绘图小程序
    小型计算器
    水仙花数
    数据可视化溯源之<图形语法>
    canvas制作圆形动态加载进度实例
    关于HTML5视频标签的问题
    Autoprefixer:一个以最好的方式处理浏览器前缀的后处理程序
    CSS3过渡动画&关键帧动画
    100种图形设计参考
    img标签的before,after伪类
  • 原文地址:https://www.cnblogs.com/gxcdream/p/7612561.html
Copyright © 2020-2023  润新知