Given an integer **K** and an index array **arr[]** of length **N** which contains elements in the range [1, N], the task is to find the index after traversing the array by **K** steps starting from the index 1.**Traversal of index array:** In the traversal of the index array the next index to be visited is the value at the current index. **Examples:**

Input:arr[] = {3, 2, 4, 1}, K = 5Output:4Explanation:

Traversal to the indices starting from index 1:

1 => 3 => 4 => 1 => 3 => 4

Finally, after K traversals the index is 4Input:arr[] = {6, 5, 2, 5, 3, 2}, K = 2Output:5

**Approach:** The key observation in the problem is that after traversing the index array N times it repeats itself. Therefore, we can find the value of the and then finally find the index after traversal.

Below is the implementation of the above approach:

## C++

`// C++ implementation to find the` `// index after traversing the index` `// array K times` `#include<bits/stdc++.h>` `using` `namespace` `std;` `// Function to find the index after` `// traversing the index array K times` `int` `findIndexAfterKTrav(vector<` `int` `> arr,` ` ` `int` `n, ` `int` `k){` ` ` `k = k % n;` ` ` `int` `indi = 1;` ` ` ` ` `// Loop to traverse the index` ` ` `// array K times` ` ` `while` `(k){` ` ` `indi = arr[indi-1];` ` ` `k--;` ` ` `}` ` ` ` ` `return` `arr[indi-1];` `}` `// Driver Code` `int` `main() {` ` ` `int` `n = 4, k = 5;` ` ` `vector<` `int` `> arr{3, 2, 4, 1};` ` ` `// Function Call` ` ` `cout << findIndexAfterKTrav(arr, n, k);` ` ` `return` `0;` `}` |

## Java

`// Java implementation to find the` `// index after traversing the index` `// array K times` `class` `GFG{` ` ` `// Function to find the index after` `// traversing the index array K times` `public` `static` `int` `findIndexAfterKTrav(` `int` `[] arr,` ` ` `int` `n, ` `int` `k)` `{` ` ` `k = k % n;` ` ` `int` `indi = ` `1` `;` ` ` ` ` `// Loop to traverse the index` ` ` `// array K times` ` ` `while` `(k > ` `0` `)` ` ` `{` ` ` `indi = arr[indi - ` `1` `];` ` ` `k--;` ` ` `}` ` ` `return` `arr[indi - ` `1` `];` `}` `// Driver code` `public` `static` `void` `main(String[] args)` `{` ` ` `int` `n = ` `4` `, k = ` `5` `;` ` ` `int` `[] arr = { ` `3` `, ` `2` `, ` `4` `, ` `1` `};` ` ` ` ` `// Function Call` ` ` `System.out.print(findIndexAfterKTrav(arr, n, k));` `}` `}` `// This code is contributed by divyeshrabadiya07` |

## Python3

`# Python3 implementation to find the` `# index after traversing the index` `# array K times` `# Function to find the index after` `# traversing the index array K times` `def` `findIndexAfterKTrav(arr, n, k):` ` ` ` ` `k ` `=` `k ` `%` `n;` ` ` `indi ` `=` `1` `;` ` ` `# Loop to traverse the index` ` ` `# array K times` ` ` `while` `(k > ` `0` `):` ` ` `indi ` `=` `arr[indi ` `-` `1` `];` ` ` `k ` `-` `=` `1` `;` ` ` `return` `arr[indi ` `-` `1` `];` `# Driver code` `if` `__name__ ` `=` `=` `'__main__'` `:` ` ` ` ` `n ` `=` `4` `;` ` ` `k ` `=` `5` `;` ` ` `arr ` `=` `[ ` `3` `, ` `2` `, ` `4` `, ` `1` `];` ` ` `# Function Call` ` ` `print` `(findIndexAfterKTrav(arr, n, k));` `# This code is contributed by Princi Singh` |

## C#

`// C# implementation to find the` `// index after traversing the index` `// array K times` `using` `System;` `class` `GFG{` ` ` `// Function to find the index after` `// traversing the index array K times` `public` `static` `int` `findIndexAfterKTrav(` `int` `[] arr,` ` ` `int` `n, ` `int` `k)` `{` ` ` `k = k % n;` ` ` `int` `indi = 1;` ` ` ` ` `// Loop to traverse the index` ` ` `// array K times` ` ` `while` `(k > 0)` ` ` `{` ` ` `indi = arr[indi - 1];` ` ` `k--;` ` ` `}` ` ` `return` `arr[indi - 1];` `}` ` ` `// Driver code` `public` `static` `void` `Main(String[] args)` `{` ` ` `int` `n = 4, k = 5;` ` ` `int` `[] arr = { 3, 2, 4, 1 };` ` ` ` ` `// Function Call` ` ` `Console.Write(findIndexAfterKTrav(arr, n, k));` `}` `}` `// This code is contributed by Princi Singh` |

## Javascript

`<script>` `// Javascript implementation to find the` `// index after traversing the index` `// array K times` `// Function to find the index after` `// traversing the index array K times` `function` `findIndexAfterKTrav(arr, n, k)` `{` ` ` `k = k % n;` ` ` `var` `indi = 1;` ` ` ` ` `// Loop to traverse the index` ` ` `// array K times` ` ` `while` `(k){` ` ` `indi = arr[indi-1];` ` ` `k--;` ` ` `}` ` ` ` ` `return` `arr[indi-1];` `}` `// Driver Code` `var` `n = 4, k = 5;` `var` `arr = [3, 2, 4, 1];` `// Function Call` `document.write( findIndexAfterKTrav(arr, n, k));` `// This code is contributed by itsok.` `</script>` |

**Output:**

4

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the **DSA Self Paced Course** at a student-friendly price and become industry ready. To complete your preparation from learning a language to DS Algo and many more, please refer **Complete Interview Preparation Course****.**

In case you wish to attend live classes with industry experts, please refer **Geeks Classes Live**