Thursday, September 4, 2025
HomeData Modelling & AIFind index after traversing a permutation Array of 1 to N by...

Find index after traversing a permutation Array of 1 to N by K steps

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 = 5 
Output: 4 
Explanation: 
Traversal to the indices starting from index 1: 
1 => 3 => 4 => 1 => 3 => 4 
Finally, after K traversals the index is 4
Input: arr[] = {6, 5, 2, 5, 3, 2}, K = 2 
Output: 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 K \% N  and then finally find the index after K \% N  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

 

Feeling lost in the world of random DSA topics, wasting time without progress? It’s time for a change! Join our DSA course, where we’ll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

RELATED ARTICLES

Most Popular

Dominic
32263 POSTS0 COMMENTS
Milvus
81 POSTS0 COMMENTS
Nango Kala
6626 POSTS0 COMMENTS
Nicole Veronica
11799 POSTS0 COMMENTS
Nokonwaba Nkukhwana
11857 POSTS0 COMMENTS
Shaida Kate Naidoo
6749 POSTS0 COMMENTS
Ted Musemwa
7025 POSTS0 COMMENTS
Thapelo Manthata
6696 POSTS0 COMMENTS
Umr Jansen
6716 POSTS0 COMMENTS