每天一道leetcode141-环形链表
考试结束,班级平均分只拿到了年级第二,班主任于是问道:大家都知道世界第一高峰珠穆朗玛峰,有人知道世界第二高峰是什么吗?正当班主任要继续发话,只听到角落默默想起来一个声音:”乔戈里峰”
前言
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-环形链表的更多相关文章
- [Java]LeetCode141. 环形链表 | Linked List Cycle
Given a linked list, determine if it has a cycle in it. Follow up:Can you solve it without using ext ...
- LeetCode141.环形链表
给定一个链表,判断链表中是否有环. 进阶:你能否不使用额外空间解决此题? /** * Definition for singly-linked list. * class ListNode { * i ...
- LeetCode141 环形链表(Java—HashSet简单应用or双指针)
题目: 判断给出的链表中是否存在环. 思路: 1. 遍历整个链表,将走过的节点的内存地址保存下来,如果再次走到同样的内存地址,说明链表中有环.时间复杂度为O(n). 2. 设置两个指针,fast指针每 ...
- 代码随想录第四天| 24. 两两交换链表中的节点 、19.删除链表的倒数第N个节点 、160.链表相交、142.环形链表II
今天链表致死量 第一题 public static class ListNode { int val; ListNode next; ListNode() {} ListNode(int val) { ...
- 丢手帕问题(环形链表)---Java 待优化
/** * * @author Administrator * 功能:丢手帕问题 */ package com.litao; public class Demo4 { /** * @param arg ...
- php实现单,双向链表,环形链表解决约瑟夫问题
传智播客PHP学院 韩顺平 PHP程序员玩转算法第一季 http://php.itcast.cn 聊天篇: 数学对我们编程来说,重不重要? 看你站在什么样的层次来说. 如果你应用程序开发,对数学要求 ...
- PHP算法学习(8) 环形链表 解决约瑟夫问题
2019年2月25日17:29:17 Josephus有过的故事:39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓.于是决定了自杀方式,41个人排成一个圆圈 ...
- 用c语言创建双向环形链表
作为一个C开发人员,无论在求职笔试题中,还是在工程项目中,都会遇到用c语言创建双向环形链表.这个也是理解和使用c指针的一项基本功. #include<...>//头文件省略 typedef ...
- java 环形链表实现约瑟夫(Joseph)问题
约瑟夫问题又名丢手绢问题.相传著名犹太历史学家 Josephus 利用其规则躲过了一场自杀游戏,而后投降了罗马. 问题: 已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围.* 从编号为 ...
- 关于HashMap多线程下环形链表的总结
目录 1. 概述 2. 敲黑板的点 3. 为什么会出现循环链表的情况呢?(jdk1.7) 4. jdk1.8中改进了resize方法 5. HashMap的线程安全问题 6. 总结 1. 概述 本文主 ...
随机推荐
- 今天踩过的坑——structs和mysql
1 在action中写了interceptor-ref就不会用defaultStack啦.得自己补上2 继承CookiesAware是不够的,得在action中配置一下 <interceptor ...
- 基于Quartz.net的远程任务管理系统 二
紧接着上一篇.上一篇讲了表设计与ADO.Net基本操作.接下来,就来说说怎么动态来添加Job任务及清理过期任务吧. 首先,先理一下思路,做事情要先把思绪理清了,然后下手就快准狠了.下面是我的思路:做一 ...
- [JAVA]java复制文件的4种方式
尽管Java提供了一个可以处理文件的IO操作类. 但是没有一个复制文件的方法. 复制文件是一个重要的操作,当你的程序必须处理很多文件相关的时候. 然而有几种方法可以进行Java文件复制操作,下面列举出 ...
- vs 你不得不会的调试方式
常规调试F5 一般情况下,我们在使用vs的jdk调试程序,通常是使用F5这种常规编译方式,很方便 but,编译的速度是so慢,慢的让人无法忍受,通常一个稍大一点的项目跑起来就需要一分钟,甚至两分钟,作 ...
- sharepoint 2013 补丁升级步骤
1. 安装过程合理: A. 可以同时在管理中心.两台前端.搜索服务器上安装重新发布的SP1补丁包(所提供的链接) B. 等待所有SP1补丁包安装完成,依次在管理中心.两台前端.搜索服务器上运行配置向导 ...
- sqlite批量处理数据性能优化
最近设计到sqlite数据库批量操作的,性能很是问题.于是一番研究(站在巨人肩膀)从网上整理出来相关性能优化方向.大体分三个级别,一般第一个阶段已足够. 1.sqlite每次插入数据(每调用一次sql ...
- TestNG参数化之@DataProvider传参
@parameters适合传递简单少量参数,复杂参数一般使用@DataProvider传递 @DataProvider语法: @DataProvider(name = "dataprovid ...
- Gogland编译LiteIDE工程需要注意问题!
致歉声明:实在抱歉,因为自己对Go语言和Gogland的不熟悉,导致错误判断!无论LiteIDE和Goland都可以顺利使用同一个包下的其它文件内容!!Go语言本身就允许把一个包拆分成不同的文件,下面 ...
- zTree第四章,异步加载,后端
后端 ------------------------------------------------------------------------------------------------- ...
- idea 新建New Module时Maven的列表加载不出来
Under Build → Build Tools → Maven → Importing, set VM options for importer to -Xmx1024m (the default ...