【LeetCode】Intersection of Two Linked Lists
来源:互联网 发布:分水岭算法原理 编辑:程序博客网 时间:2024/05/18 03:09
题目
Write a program to find the node at which the intersection of two singly linked lists begins.
For example, the following two linked lists:
A: a1 → a2 ↘ c1 → c2 → c3 ↗ B: b1 → b2 → b3
begin to intersect at node c1.
Notes:
- If the two linked lists have no intersection at all, return
null
. - The linked lists must retain their original structure after the function returns.
- You may assume there are no cycles anywhere in the entire linked structure.
- Your code should preferably run in O(n) time and use only O(1) memory.
题目要求两个单链表相交的第一个节点,可以通过遍历第一个链表,计算长度len1, 保存最后一个节点,再遍历第二个链表,计算长度len2,同时检查最后一个节点是否相同,之后再从头遍历两链表,(若len1>len2),链表一先遍历len1-len2个节点,之后同时遍历到相同的节点即可,代码如下:
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */public class Solution { public ListNode getIntersectionNode(ListNode headA, ListNode headB) { if(headA==null||headB==null){ return null; } int len1=0; ListNode h1=headA; while(h1.next!=null){ //注意是.next h1=h1.next; len1++; } int len2=0; ListNode h2=headB; while(h2.next!=null){ h2=h2.next; len2++; } ListNode n1=headA; ListNode n2=headB; if(len1>len2){ int k=len1-len2; while(k-->0){ n1=n1.next; } }else{ int k=len2-len1; while(k-->0){ n2=n2.next; } } /* or while(n1!=n2){n1=n1.next;n2=n2.next; } return n1; */ while(n1!=null&&n2!=null){ if(n1==n2){ return n1; } n1=n1.next; n2=n2.next; } return null; }}
---EOF---
0 0
- [leetcode] [leetcode]Intersection of Two Linked Lists
- 【LeetCode】Intersection of Two Linked Lists
- LeetCode: Intersection of Two Linked Lists
- [Leetcode] Intersection of Two Linked Lists
- [Leetcode]Intersection of Two Linked Lists
- LeetCode:Intersection of Two Linked Lists
- leetcode: Intersection of Two Linked Lists
- Leetcode: Intersection of Two Linked Lists
- Intersection of Two Linked Lists--leetcode
- [leetcode]Intersection of Two Linked Lists
- leetcode:Intersection of Two Linked Lists
- leetcode之Intersection of Two Linked Lists
- 【Leetcode】:Intersection of Two Linked Lists
- leetcode Intersection of Two Linked Lists
- [LeetCode]Intersection of Two Linked Lists
- leetcode: Intersection of Two Linked Lists
- 【LeetCode】Intersection of Two Linked Lists
- LeetCode Intersection of Two Linked Lists
- 齐次坐标的理解
- android夜间模式的实现
- dedecms首页调用随机文章
- 黑马程序员之IOS学习总结——04 C语言中数组与字符串
- 13.4.15 管道的实现
- 【LeetCode】Intersection of Two Linked Lists
- Java线程(十一):CountDownLatch-线程并发的发令枪
- iOS开发之开启定位后遇到的问题
- 13.4.16 加挂/卸载的实现
- Neutron使用openvswitch网络通信的基本原理
- 13.4.17 链接/解链的实现(文件共享)
- JS隐藏子iframe下的某个元素
- opencv中常用转换
- redis客户端之jedis 操作工具类