leetcode Linked List Cycle II
2015-09-01 10:34
393 查看
题目链接
思想:
首先判断是不是有圈
如果有圈的话可以找两个列表的第一个公共节点。这两个链表分别是
head->……->tail
tail->….tail
思想:
首先判断是不是有圈
如果有圈的话可以找两个列表的第一个公共节点。这两个链表分别是
head->……->tail
tail->….tail
/** * Definition for singly-linked list. * class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */ public class Solution { public ListNode detectCycle(ListNode head) { if(head==null) { return null; } ListNode pre=head; ListNode tail=head; while(true) { if(pre!=null&&pre.next!=null) { pre=pre.next.next; tail=tail.next; } else { break; } if(pre==tail) { return getIntersectionNode(pre,head); } } return null; } public ListNode getIntersectionNode(ListNode headA, ListNode headB) { ListNode temp; //求长度 int linkALength=0; temp=headA; while(temp!=headA) { temp=temp.next; linkALength++; } int linkBLength=0; temp=headB; while(temp!=headB) { temp=temp.next; linkBLength++; } //对齐 ListNode linkA=headA; ListNode linkB=headB; if(linkALength>linkBLength) { for(int i=0;i<linkALength-linkBLength;i++) { linkA=linkA.next; } } else { for(int i=0;i<linkBLength-linkALength;i++) { linkB=linkB.next; } } while(linkA!=null&&linkB!=null) { if(linkA==linkB) { return linkA; } linkA=linkA.next; linkB=linkB.next; } return null; } }
相关文章推荐
- poj 2286 The Rotation Game IDA*算法
- php第一阶段html_table(2)
- 自动释放池什么时候创建,什么时候销毁?
- js,php 使用正则表达式解析GPS数据
- 项目:××官网改版总结经验和收获
- mysql常用语句
- 8月国内网站流量统计TOP5:360安全中心季军
- android调整版本问题记载
- RevitAPI: PlanarFace.Normal 和 PlanarFace.FaceNormal
- voltDB 查询语句解析过程 初步分析
- SQL Server 查询数据库中所有的表名及行数
- 关于C++中的显示调用explicit
- Python Unitest 源码阅读:概述
- 常规功能和模块自定义系统(cfcmms)—005开发环境搭建和创建项目
- JNI编程指南-第四章 字段和方法
- SQL配置文件实例 Sql_Map.xml
- OptionMenu和ContextMenu使用介绍
- Android Studio 写打印Log的代码出错
- 专利权发明的两大特性
- 设计模式系列3--适配器模式