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

    两个指针的做法,但比起2个数组有序的数组的话,链表做更容易,因为当一个链表遍历结束后,tail指针并不需要遍历另一个链表,只要直接指向它就行

    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     struct ListNode *next;
     * };
     */
    struct ListNode *mergeTwoLists(struct ListNode *l1, struct ListNode *l2) {
        struct ListNode *head = (struct ListNode *)malloc(sizeof(struct ListNode));
        struct ListNode *tail = head;
        while(l1&&l2){
            if(l1->val<l2->val){
                tail->next = l1;
                l1 = l1->next;
            }else {
                tail->next = l2;
                l2 = l2->next;
            }
            tail = tail->next;
        }
        //很傻比的后面全部遍历一遍
        while(l1){
            tail->next = l1;
            l1 = l1->next;
            tail = tail->next;
        }
        while(l2){
            tail->next = l2;
            l2 = l2->next;
            tail = tail->next;
        }
        return head->next;
    }
    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     struct ListNode *next;
     * };
     */
    struct ListNode *mergeTwoLists(struct ListNode *l1, struct ListNode *l2) {
        struct ListNode *head = (struct ListNode *)malloc(sizeof(struct ListNode));
        struct ListNode *tail = head;
        while(l1&&l2){
            if(l1->val<l2->val){
                tail->next = l1;
                l1 = l1->next;
            }else {
                tail->next = l2;
                l2 = l2->next;
            }
            tail = tail->next;
        }
        if(!l1)tail->next = l2;
        else if(!l2) tail->next = l1;
        return head->next;
    }
  • 相关阅读:
    封装好的AFN网络请求框架和MBProgress
    iOS定时器的使用
    iOS去除导航栏和tabbar的1px横线
    移动端加解密
    改变字符串中部分字符传的字体大小和颜色
    关于NSLog
    ipad开发:二维码扫描,摄像头旋转角度问题解决办法
    iOS-图文表并茂,手把手教你GCD
    计算富文本的高度
    jsp打印
  • 原文地址:https://www.cnblogs.com/llei1573/p/4335972.html
Copyright © 2011-2022 走看看