zoukankan      html  css  js  c++  java
  • Leetcode 21 Merge Two Sorted Lists 链表

    合并两个已排序的链表,考到烂得不能再烂的经典题,但是很多人写这段代码会有这样或那样的问题

    这里我给出了我的C++算法实现

     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 && !l2) return l1;
    13         if(l2 && !l1) return l2;
    14         if( !l2 && !l1) return NULL; //保证所有列表不为空
    15         ListNode* t1 = l1;
    16         ListNode* t2 = l2;
    17         ListNode* t = NULL;
    18         if(t1->val < t2->val){  //确定表头t是l1还是l2
    19             t = t1;
    20             t1 = t1->next;
    21         }
    22         else{
    23             t = t2;
    24             t2 = t2->next;
    25         }
    26         for(;t1&&t2; t = t->next){//确定表头t的下一个元素
    27             if(t1->val < t2->val){
    28                 t->next = t1;
    29                 t1 = t1->next;
    30             }
    31             else{
    32                 t->next = t2;
    33                 t2 = t2->next;
    34             }
    35         }
    36         if(t1){//t1不为空,将l1剩余部分插入到t后
    37             t->next = t1;
    38         }
    39         if(t2){//t2不为空,将l2剩余部分插入到t后
    40             t->next = t2;
    41         }
    42         if(l1->val < l2->val) return l1;
    43         else return l2;//确定表头
    44     }
    45 };
  • 相关阅读:
    25.Zabbix入门必备
    6.Ansible Roles角色实战
    5.Ansible Jinja2 模板
    4.Ansible Task控制
    3.Ansible varialbes实战
    2.Ansible Playbook剧本
    1.Ansible自动化管理工具
    网站架构面试题必备
    winsows CMD及Linux命令大全 欢迎补充
    Oracle查询表空间
  • 原文地址:https://www.cnblogs.com/onlyac/p/5231541.html
Copyright © 2011-2022 走看看