Sunday, August 31, 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
32250 POSTS0 COMMENTS
Milvus
81 POSTS0 COMMENTS
Nango Kala
6619 POSTS0 COMMENTS
Nicole Veronica
11792 POSTS0 COMMENTS
Nokonwaba Nkukhwana
11840 POSTS0 COMMENTS
Shaida Kate Naidoo
6734 POSTS0 COMMENTS
Ted Musemwa
7016 POSTS0 COMMENTS
Thapelo Manthata
6689 POSTS0 COMMENTS
Umr Jansen
6704 POSTS0 COMMENTS