找出有环链表的第一个起始点

2024-06-21 21:38
文章标签 环链 起始 找出 第一个

本文主要是介绍找出有环链表的第一个起始点,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这里写图片描述

 class ListNode {int val;ListNode next;ListNode(int x) {val = x;next = null;}}public class Solution {//找出有环链表的第一个起始点public ListNode detectCycle(ListNode head) {if(head==null||head.next==null||head.next.next==null)return null;   ListNode slow=head.next;ListNode fast=head.next.next;while (fast!=slow&&fast!=null&&fast.next!=null) {fast=fast.next.next;slow=slow.next;}if(fast==null||fast.next==null){return null;}else{fast=head;while(fast!=slow){fast=fast.next;slow=slow.next;}}return slow;}public static void main(String[]args){//System.out.println("Hello");ListNode head=new ListNode(1);head.next=new ListNode(2);head.next.next=new ListNode(3);ListNode tmp=new ListNode(4);head.next.next.next=tmp;tmp.next=head.next;Solution s=new Solution();System.out.println(s.detectCycle(head).val);}
}

这篇关于找出有环链表的第一个起始点的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1082410

相关文章

剑指offer(C++)--两个链表的第一个公共结点

题目 输入两个链表,找出它们的第一个公共结点。 解法一 两个链表一定有交点的话,方法是指向短链表指针先走完,然后指向长链表,指向长链表指针后走完,指向短链表。所以,第二次走过,一定会在交点相遇。 class Solution {public:ListNode* FindFirstCommonNode( ListNode *pHead1, ListNode *pHead2) {ListN

剑指offer(C++)--第一个只出现一次的字符

题目 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写). class Solution {public:int FirstNotRepeatingChar(string str) {map<char, int> mp;for(int i = 0; i < str.size(); ++i)m

导航条下 ScrollView 第一个View去掉向下偏移的64px

self.automaticallyAdjustsScrollViewInsets=NO;      self.scrollView.contentInset=UIEdgeInsetsMake(-64, 0, 0, 0); self.automaticallyAdjustsScrollViewInsets=NO; 相同的意思。

算法8—不通过比较,找出两个数的最大值

问题: 比如:给定两个值 5和10,不通过比较,直接找出最大值。 分析: 一旦涉及到不用比较找最大值,想都不用想,一般只能通过位运算来实现。  max = a - ((a-b)&((a-b)>>31)) 或者 max = ((a+b)+|a-b|)/2 如果找最小值,我们只需把两个值相加,减去max即可。

算法7— 判断一个单链表是否有环,如果有,找出环的起始位置

第一种方法是从单链表head开始,每遍历一个,就把那个node放在hashset里,走到下一个的时候,把该node放在hashset里查找,如果有相同的,就表示有环,如果走到单链表最后一个node,在hashset里都没有重复的node,就表示没有环。 这种方法需要O(n)的空间和时间。 第二种方法是设置两个指针指向单链表的head, 然后开始遍历,第一个指针走一步,第二个指针走两步,如果没

第一个PSpice程序

环境cadence 16.6 PSpice A/D PSpice程序开发已经逐渐淡出我们的视线,可是却不能忽视其对电子设计开发的重大作用,在学习的过程中偶然看到PSpice应用,却全部是图形输入,而怀着想知道为什么的好奇心,找遍图书馆唯一一本的PSpice程序设计与仿真的书(虽然也有英文的,但是好几本书,等需要时再看了)终于还是被我找到,经过不断的努力,加上偶然的原因终于成功运行了。 步骤:

鹅算法(GOOSE Algorithm,GOOSE)求解复杂城市地形下无人机避障三维航迹规划,可以修改障碍物及起始点(Matlab代码)

一、鹅算法 鹅优化算法(GOOSE Algorithm,GOOSE)从鹅的休息和觅食行为获得灵感,当鹅听到任何奇怪的声音或动作时,它们会发出响亮的声音来唤醒群中的个体,并保证它们的安全。 参考文献 [1]Hamad R K, Rashid T A. GOOSE algorithm: a powerful optimization tool for real-world engineering

初学WebGL,使用Three.js开发第一个3d场景示例

使用Three.js 开发3d场景   在图书馆偶然撞见《Three.js开发指南》一书,便试着捣鼓一翻,现将第一个示例的部分代码、注解和相关方法的API记录在此。因为此书发行时是Three.js r69版本,所以当前部分代码有所修改,且所有方法和参数以官方最新版本Three.js r90为准。 <!doctype html><html lang="en"><head><meta char

第一个Flask程序

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm=1001.2014.3001.5501 一切准备就绪,现在我们开始编写第一个Flask程序,由于是第一个Flask程序,当然要从最简单的“Hello World!”开始。   实例01  输出“Hello Worl

QT quick开发学习第一天:第一个程序界面

第一个Qt Quick程序import QtQuick 2.8 import QtQuick.Window 2.2   Rectangle{ width:1920; height:4000; color: "gray";   Text{ anchors.centerIn: parent; text:"I love you!chi