leetcode面试题 02.07. 链表相交
2022/1/3 23:12:21
本文主要是介绍leetcode面试题 02.07. 链表相交,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一:题目
二:思路
1.这道题我们是需要找到一个结点,并且从这个结点往后的结点都相等
2.我们需要将两个链表 右对齐
3.然后将长链表的指针移动到和短链表头结点相同的位置
4.接下来就是比较指针,当一个指针相同也就意味着往后的结点的数值也相等
三:上码
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) { /** 思路:1.这道题我们是需要找到一个结点,并且从这个结点往后的结点都相等 2.我们需要将两个链表 右对齐 3.然后将长链表的指针移动到和短链表头结点相同的位置 4.接下来就是比较指针,当一个指针相同也就意味着往后的结点的数值也相等 */ ListNode* node1 = headA; ListNode* node2 = headB; //求取链表的长度是为了右对齐 int lenA = 0; int lenB = 0; while(node1 != NULL){//求链表A的长度 node1 = node1->next; lenA++; } while(node2 != NULL){//求取链表B的长度 node2 = node2->next; lenB++; } node1 = headA;//因为上方的操作让node1,node2已经指向了NULL node2 = headB; //我们让node1 lenA为最长的长度 if(lenB > lenA){ swap(lenA,lenB); swap(node1,node2); } int poor = lenA - lenB; //让长链表的指针和短链表首节点位置相同 即是(右对齐) while(poor--){ node1 = node1->next; } //寻找相同的指针(只要指针相同那么指针往后的结点所对应的数值也相等) while(node1 != NULL){ if(node1 == node2){ return node1; } node1 = node1->next; node2 = node2->next; } return NULL; } };
渣渣杰又水了一道 这个题有意思的是我们需要理解 比较的是指针相等(当指针相等的时候我们就可以知道其往后的数值也就相等了),这可比数组牛逼多了,数组还得一个一个比较,链表yyds!!!
这篇关于leetcode面试题 02.07. 链表相交的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-17zero-shot-learning-definition-examples-comparison
- 2024-06-06Package Easy(基于 NSIS 的打包exe安装包工具)使用方法-icode9专业技术文章分享
- 2024-06-06基于 casdoor 的 ELK 开源登录认证解决方案: elk-auth-casdoor-icode9专业技术文章分享
- 2024-05-29Elasticsearch慢查询日志配置
- 2024-05-29揭秘华为如此多成功项目的产品关键——Charter模板
- 2024-05-29海外IDC业务拓展的7大挑战
- 2024-05-29InLine Chat功能优化对标Github Copilot,CodeGeeX带来更高效、更直观的编程体验!
- 2024-05-29CodeGeeX 智能编程助手 6 项功能升级,在Visual Studio插件市场霸榜2周!
- 2024-05-29AutoMQ 生态集成 Apache Doris
- 2024-05-292024年IDC行业的深度挖掘:机遇、挑战与未来展望