leetcode:Linked List Cycle
2015-06-20 19:12
309 查看
题目
Link:Linked List CycleGiven a linked list, determine if it has a cycle in it.
Follow up:
Can you solve it without using extra space?
我的解法
这道题在2015年腾讯实习生笔试中出现。很明显的解法是,设置两个指针,一个走两步,一个走一步。如果有环,走两步的指针肯定能追上走一步的;若没有环,走两步的肯定先走到链表尾部。
use faster and lower runner solution. (2 pointers)
the faster one move 2 steps, and slower one move only one step.
if there’s a circle, the faster one will finally “catch” the slower one.
(the distance between these 2 pointers will decrease one every time.)
if there’s no circle, the faster runner will reach the end of linked list. (NULL)
java中没有指针,只有引用。而它又和C++的引用完全不是一个东西,c/c++的引用是同一块内存的不同名字。而java的引用是指向一个对象,引用本身也占用了内存。
另外,java中,链表节点通过class实现,在C/C++中通过struct实现
我的代码:
/** * Definition for singly-linked list. * class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */ public class Solution { public boolean hasCycle(ListNode head) { if (head == null || head.next == null) return false; ListNode slow = head; ListNode fast = head; while(fast != null && fast.next != null) { slow = slow.next; fast = fast.next.next; if (slow == fast) return true; } return false; } }
相关文章推荐
- 斐波那契查找(超详解)
- POJ 1183 反正切函数的应用(数论)
- 2015年大一下第15周项目1-平方根中的异常
- 斯坦福大学 iOS 7应用开发 ppt
- opencv 在 ubuntu14.04 中的配置和测试
- awk关系操作符
- 迈克尔杰克逊
- 黑马程序员——Java基础---面向对象(继承、多态、抽象类、接口、内部类)
- hdoj 1426 Sudoku Killer 【DFS经典题目】
- 剑指offer35:第一个只出现一次的字符(hash表使用)
- 的微信公众号开发 图灵机器人接口允许调用自己的微通道成为一个智能机器人
- linux 文件I/O 入门
- typedef和define的一些区别
- Python性能(转)
- windows 远程 ubuntu
- Android数据库ORMlite框架翻译系列(第二章:part 3)
- [原创]Ubuntu 14.04安装搜狗输入法
- 如何搭建.NET Entity Framework分布式应用系统框架
- Android数据库ORMlite框架翻译系列(第二章:part 2)
- 欢迎使用CSDN-markdown编辑器