【力扣练习题】C语言答案
创始人
2024-12-17 03:34:55
0

【21题,合并两个有序链表】
思路:递归:

1、如果q为NULL,p为NULL;返回NULL;

2、如果q为NULL,返回p;

3、如果p为NULL,返回 q;

4、判断两数大小,p小于等于q返回p,p->next递归调用函数

5、否则返回q,q->next递归调用函数

代码:
​ struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2) {     struct ListNode* p = list1;     struct ListNode* q = list2;          if(q==NULL && p==NULL)     {         return NULL;     }     else if(q==NULL)     {         return p;     }     else if(p==NULL)     {         return q;     }          if(p->val <= q->val)     {         p->next = mergeTwoLists(p->next,q);         return p;     }     q->next =  mergeTwoLists(p,q->next);       return q; }
思路:使用迭代的方法

1、定义头尾节点,

2、遍历判断两个链表的单个值,用尾插法将小的值代入链表

代码:
​ struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2) {     struct ListNode* p = list1;     struct ListNode* q = list2;     struct ListNode *tail = NULL;     struct ListNode *head = NULL;     if(q==NULL && p==NULL)     {         return NULL;     }     else if(q==NULL)     {         return p;     }     else if(p==NULL)     {         return q;     }       while(p != NULL && q!=NULL)     {         struct ListNode *pnew = (q->val <= p->val)? q:p;         if(head == NULL)         {             head = pnew;             tail = pnew;         }         else          {             tail->next = pnew;             tail = pnew;           }         if(q->val <= p->val)         {             q=q->next;         }         else         {             p= p->next;         } ​     }     tail->next = (q==NULL)?p:q;     return head; }
【环形链表】
思路:暴力求解

1、将所有遍历过的值全部替换为100001

2、判断如果遇到NULL则返回false

3、如果遇到大于100000的数则返回true;

代码:
/**  * Definition for singly-linked list.  * struct ListNode {  *     int val;  *     struct ListNode *next;  * };  */ bool hasCycle(struct ListNode *head) {     if(head == NULL)     {         return false;     }     struct ListNode *p = head;     int temp = 10000;     while(1)     {          p->val = 100001;         p = p->next;         if(p == NULL)         {             return false;             break;         }         else if(p->val > 100000)         {             return true;             break;         }             } }

相关内容

热门资讯

盘点一款!!锋视棋牌怎么控制输... 盘点一款!!锋视棋牌怎么控制输赢(透视)透视辅助工具(2024已更新)(哔哩哔哩)一、锋视棋牌怎么控...
2分钟插件!财神十三张是否有外... 2分钟插件!财神十三张是否有外 挂,欢乐贰柒拾开外 挂后有什么表现(竟然是有挂)1、欢乐贰柒拾开外 ...
2024教程!牌乐门如何拿到好... 2024教程!牌乐门如何拿到好牌(透视)确实真的有挂(2025已更新)(哔哩哔哩);1、这是跨平台的...
四分钟科普!钱塘十三水黑科技,... 四分钟科普!钱塘十三水黑科技,小闲棋牌其实有辅助挂,安装教程(有挂攻略);1、上手简单,内置详细流程...
传递经验!临沧麻将有挂吗(透视... 传递经验!临沧麻将有挂吗(透视)透明挂透视辅助app(2025已更新)(哔哩哔哩)1、临沧麻将有挂吗...
五分钟技巧!中至上饶小程序有挂... 您好,中至上饶小程序有挂吗这款游戏可以开挂的,确实是有挂的,需要了解加微【757446909】很多玩...
分享一款!闲来外 挂是真的吗(... 分享一款!闲来外 挂是真的吗(透视)一直真的是有挂(2025已更新)(哔哩哔哩)1、闲来外 挂是真的...
7分钟实锤!情怀古诗词外 挂,... 7分钟实锤!情怀古诗词外 挂,老友棋牌麻将斗地主果然有挂辅助挂,科技教程(有挂解说)1、情怀古诗词外...
发现一款!同城跑胡子免费辅助器... 发现一款!同城跑胡子免费辅助器(透视)透视辅助工具(2023已更新)(哔哩哔哩)1、同城跑胡子免费辅...
一分钟攻略!雀友辅助软件,财神... 一分钟攻略!雀友辅助软件,财神十三张 辅助软件(果然是有挂)1、每一步都需要思考,不同水平的挑战会更...