首页 > 编程语言 >#yyds干货盘点# LeetCode程序员面试金典:环路检测

#yyds干货盘点# LeetCode程序员面试金典:环路检测

时间:2022-12-13 18:05:19浏览次数:62  
标签:yyds head slow 金典 pos next 链表 null LeetCode

题目:

给定一个链表,如果它是有环链表,实现一个算法返回环路的开头节点​。若环不存在,请返回 null。

如果链表中有某个节点,可以通过连续跟踪 next​ 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos​ 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos​ 是 -1​,则在该链表中没有环。注意:​pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。

 

示例 1:

#yyds干货盘点# LeetCode程序员面试金典:环路检测_链表

输入:head = [3,2,0,-4], pos = 1
输出:tail connects to node index 1
解释:链表中有一个环,其尾部连接到第二个节点。

示例 2:

#yyds干货盘点# LeetCode程序员面试金典:环路检测_链表_02

输入:head = [1,2], pos = 0
输出:tail connects to node index 0
解释:链表中有一个环,其尾部连接到第一个节点。

示例 3:

#yyds干货盘点# LeetCode程序员面试金典:环路检测_代码实现_03

输入:head = [1], pos = -1
输出:no cycle
解释:链表中没有环。

代码实现:

public class Solution {
public ListNode detectCycle(ListNode head) {
if (head == null) {
return null;
}
ListNode slow = head, fast = head;
while (fast != null) {
slow = slow.next;
if (fast.next != null) {
fast = fast.next.next;
} else {
return null;
}
if (fast == slow) {
ListNode ptr = head;
while (ptr != slow) {
ptr = ptr.next;
slow = slow.next;
}
return ptr;
}
}
return null;
}
}

标签:yyds,head,slow,金典,pos,next,链表,null,LeetCode
From: https://blog.51cto.com/u_13321676/5934946

相关文章

  • #yyds干货盘点# 名企真题专题: 二分查找
    1.简述:描述对于一个有序数组,我们通常采用二分查找的方式来定位某一元素,请编写二分查找的算法,在数组中查找指定元素。给定一个整数数组A及它的大小n,同时给定要查找的元素val,......
  • LeetCode 215_数组中的第K个最大元素
    LeetCode215:数组中的第K个最大元素题目给定整数数组nums和整数k,请返回数组中第k个最大的元素。请注意,你需要找的是数组排序后的第k个最大的元素,而不是第k个......
  • 代码随想录训练营第六天|LeetCode242有效的字母异位词、LeetCode349两个数组的交集、L
    LeetCode242有效的字母异位词tag:#哈希表#数组leetcode地址:242. 有效的字母异位词代码://通过数组的方式对每个字母进行统计数量,然后遍历数组,查看是否每一项都为0f......
  • [LeetCode]001-两数之和
    >>>传送门题目给定一个整数数组nums 和一个整数目标值target,请你在该数组中找出和为目标值target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入......
  • #yyds干货盘点#关于梳理前端业务的探索和实践
    前言业务是我们日常工作围绕的主体内容和背后逻辑,对于前端工程师来说业务的形态相较于后端会有所差异,比如我们有可见的页面,我们会谈用户交互,更贴近用户的日常操作和......
  • 【LeetCode】二分法--剑指 Offer 53 - I. 在排序数组中查找数字 I
    点击直达题目内容统计一个数字在排序数组中出现的次数。示例示例1:输入:nums=[5,7,7,8,8,10],target=8输出:2示例2:输入:nums=[5,7,7,8,8,10],target......
  • LeetCode962. Maximum Width Ramp
    题意给一个序列,求其中最大的j-i,满足i<j且num[i]<=nums[j]方法单调栈代码classSolution{public:intmaxWidthRamp(vector<int>&A){stack<int......
  • leetcode 128 最长连续序列(hash)
    ​​128.最长连续序列​​难度困难437给定一个未排序的整数数组,找出最长连续序列的长度。要求算法的时间复杂度为 O(n)。示例:输入: [100,4,200,1,3,2]输出:4解......
  • leetcode 139. 单词拆分(BFS 或者 DP)
    题目大意:给定一个非空字符串s和一个包含非空单词列表的字典wordDict,判定 s是否可以被空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词。......
  • leetcode 155. 最小栈(辅助栈)
    题目大意:设计一个支持push,pop,top操作,并能在常数时间内检索到最小元素的栈。push(x)——将元素x推入栈中。pop() ——删除栈顶的元素。top() ——获取栈顶元素......