码迷,mamicode.com
首页 > 其他好文 > 详细

每天一道leetcode141-环形链表

时间:2018-11-08 22:12:55      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:pos   splay   color   null   mic   结束   san   20px   keyword   

考试结束,班级平均分只拿到了年级第二,班主任于是问道:大家都知道世界第一高峰珠穆朗玛峰,有人知道世界第二高峰是什么吗?正当班主任要继续发话,只听到角落默默想起来一个声音:”乔戈里峰

前言

2018.11.8号打卡
明天的题目:
https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/

题目

每天一道leetcode141-环形链表
分类:链表
中文链接:
https://leetcode-cn.com/problems/linked-list-cycle/description/
英文链接
https://leetcode.com/problems/linked-list-cycle/description/

题目详述

给定一个链表,判断链表中是否有环。
进阶:
你能否不使用额外空间解决此题?

题目详解

思路

  • 使用两个指针,一个快指针,一个慢指针;
  • 快的每次走两步,慢的每次走一步,如果有环,那么快的肯定可以追上慢点,两者相等

代码

 1/**
2 * Definition for singly-linked list.
3 * class ListNode {
4 *     int val;
5 *     ListNode next;
6 *     ListNode(int x) {
7 *         val = x;
8 *         next = null;
9 *     }
10 * }
11 */

12public class Solution {
13    public boolean hasCycle(ListNode head) {
14        if(head == null || head.next == null)
15            return false;
16        ListNode fast = head.next;
17        ListNode slow = head;
18        while(slow != null && fast != null)
19        {
20            if(fast == slow)
21                return true;
22            slow = slow.next;
23            if(fast.next != null)
24                fast = fast.next.next;
25            else
26                return false;
27        }
28        return false;
29    }
30}

代码讲解

  • 16-17行定义快慢指针
  • 20-21行如果快指针与慢指针相遇,那么说明有环;
  • 22-26行 快的走两步,慢的每次走一步

结束语

2018.11.8号打卡

作者乔戈里亲历2019秋招,哈工大计算机本硕,百度准入职java工程师,欢迎大家关注我的微信公众号:程序员乔戈里,公众号有3T编程资源,以及我和我朋友(准入职百度C++工程师)在秋招期间整理的近200M的面试必考的java与C++面经,并有每天一道leetcode打卡群与技术交流群,欢迎关注。

每天一道leetcode141-环形链表

标签:pos   splay   color   null   mic   结束   san   20px   keyword   

原文地址:https://www.cnblogs.com/qiaogeli/p/9931938.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!