博客
关于我
学会链表中LeetCode三道题
阅读量:117 次
发布时间:2019-02-26

本文共 2560 字,大约阅读时间需要 8 分钟。

??????????

?????????

1. ????

????? head ?????????????????????????????????????????????????????????????

2. ????

??????????????????????????????????????????????????????????????????????

????

struct ListNode {    int val;    struct ListNode* next;};struct ListNode* middleNode(struct ListNode* head) {    struct ListNode* fast = head, *slow = head;    while (fast && fast->next) {        slow = slow->next;        fast = fast->next->next;    }    return slow;}

????????k???

1. ????

???????????????k????????????????1????

2. ????

??????????????????k??????????????????????????????????k????

????

struct ListNode {    int val;    struct ListNode* next;};struct ListNode* getKthFromEnd(struct ListNode* head, int k) {    struct ListNode* fast = head, *slow = head;    while (k--) {        if (fast == NULL) {            return NULL;        }        fast = fast->next;    }    while (fast) {        fast = fast->next;        slow = slow->next;    }    return slow;}

???????????

1. ????

??????????????????????????????

2. ????

???????????????????????????????????????????????????????????????????????????????

???????????

struct ListNode {    int val;    struct ListNode* next;};struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2) {    struct ListNode* head = NULL, *tail = NULL;    if (l1 == NULL) {        return l2;    }    if (l2 == NULL) {        return l1;    }    if (l1->val < l2->val) {        head = tail = l1;        l1 = l1->next;    } else {        head = tail = l2;        l2 = l2->next;    }    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 = l1;    }    if (l2) {        tail->next = l2;    }    return head;}

??????????

struct ListNode {    int val;    struct ListNode* next;};struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2) {    struct ListNode* head = NULL, *tail = NULL;    head = tail = (struct ListNode*)malloc(sizeof(struct ListNode));    tail->next = NULL;    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 = l1;    }    if (l2) {        tail->next = l2;    }    struct ListNode* node = head;    head = head->next;    free(node);    return head;}

??????????????????????????????????????????????????????????????

转载地址:http://gxrk.baihongyu.com/

你可能感兴趣的文章
Objective-C实现redis分布式锁(附完整源码)
查看>>
Objective-C实现reverse letters反向字母算法(附完整源码)
查看>>
Objective-C实现ripple adder涟波加法器算法(附完整源码)
查看>>
Objective-C实现RodCutting棒材切割最大利润算法(附完整源码)
查看>>
Objective-C实现Romberg算法(附完整源码)
查看>>
Objective-C实现ROT13密码算法(附完整源码)
查看>>
Objective-C实现round robin循环赛算法(附完整源码)
查看>>
Objective-C实现RRT路径搜索(附完整源码)
查看>>
Objective-C实现RS485通信接收数据(附完整源码)
查看>>
Objective-C实现rsa 密钥生成器算法(附完整源码)
查看>>
Objective-C实现RSA密码算法(附完整源码)
查看>>
Objective-C实现RSA素因子算法(附完整源码)
查看>>
Objective-C实现runge kutta龙格-库塔法算法(附完整源码)
查看>>
Objective-C实现SCC的Kosaraju算法(附完整源码)
查看>>
Objective-C实现segment tree段树算法(附完整源码)
查看>>
Objective-C实现segmented sieve分段筛算法(附完整源码)
查看>>
Objective-C实现selection sort选择排序算法(附完整源码)
查看>>
Objective-C实现sha256算法(附完整源码)
查看>>
Objective-C实现shell sort希尔排序算法(附完整源码)
查看>>
Objective-C实现sherman morrison公式算法(附完整源码)
查看>>