Dataford
Interview QuestionsInterview GuidesExperiencesCoaching
New
Pricing
Get started
Dataford
Popular roles
Software EngineerData AnalystData ScientistData EngineerBusiness AnalystAI EngineerMachine Learning EngineerProduct Manager
Browse
Browse All RolesEvery role hub, from analyst to MLBrowse All CompaniesCompany-specific interview loopsAll Interview GuidesThe full guide library
Top questions by role
Software EngineerData AnalystData ScientistData EngineerBusiness AnalystAI EngineerMachine Learning EngineerProduct Manager
Top questions by skill
SQLPythonStatisticsMachine LearningA/B TestingSystem DesignGenerative AIProduct SenseMetricsBehavioral
Browse all questions →Try a mock interview
Experiences
Practice
Mock InterviewsTimed interview simulations with feedbackCoaching1:1 coaching with people at your target companiesSuccess PathYour 6-week structured planModulesCurated lessons by topicWebinarsTalks from ex-Big Tech data leadsPlaygroundA free-form scratch editor
Learn
BlogInterview strategy and career adviceTech Job Market ReportHiring trends across data and AI rolesFor UniversitiesDataford for career centersAbout DatafordWho we are and how we build
Pricing
Build my plan
Detect a Loop in Linked List
00:00
5 left

Detect a Loop in Linked List

EasyPython

Problem

Amazon Lab126 diagnostics can represent Fire TV playback events as a singly linked list. Given an index-based representation of that list, determine whether following next pointers eventually revisits a node.

Use Floyd's cycle detection algorithm with a slow pointer moving one step at a time and a fast pointer moving two steps at a time. Do not use a visited set for the primary solution.

Formal Specification

Implement has_cycle(values, next_indices), where values is an array containing node payloads and next_indices[i] is the index of the node reached from node i. A value of -1 means that node i has no successor. The arrays describe nodes indexed from 0; an empty list represents an empty linked list whose head is absent. The head is always node 0 when at least one node exists.

Return True if traversal from node 0 enters a cycle, otherwise return False.

Constraints

  • 0 <= len(values) <= 10^5
  • len(next_indices) == len(values)
  • Each next index is -1 or a valid node index
  • The head is node 0 when the list is nonempty

Function Signature

def has_cycle(values, next_indices):
Interviewer

Your question is Detect a Loop in Linked List. Start with the requirements in the Question tab.

Run and submit as often as you like. When you're ready, talk me through your approach or go straight to the code.

You need to log in / sign up to run or submit.
CodePython 3
Sign up free to run your codeLog inLn 2
Run your code to see test output here.