We use cookies to ensure you have the best browsing experience on our website. Please read our cookie policy for more information about how we use cookies.
  • HackerRank Home

    HackerRank

  • |
  • Prepare
  • Certify
  • Compete
  • Hiring developers?
  1. Minimum Swaps 2
  2. Discussions

Minimum Swaps 2

Problem
Submissions
Leaderboard
Discussions
Editorial

Sort 2411 Discussions, By:

recency

Please Login in order to post a comment

  • lazar2606
    3 weeks ago+ 0 comments

    Java solution:

        static int minimumSwaps(int[] arr) {
            int swaps = 0;
            for (int i = 0; i < arr.length; i++) {
                while (arr[i] != i + 1) {
                    int temp = arr[arr[i] - 1];
                    arr[arr[i] - 1] = arr[i];
                    arr[i] = temp;
                    swaps++;
                }
            }
            return swaps;
        }
    
    0|
    Permalink
  • IbadAhmad
    3 weeks ago+ 0 comments

    My solution in javascript

    function minimumSwaps(arr) {
        let sortedArray = arr
        let numberPositions = {}
        let numberOfSwaps = 0
        
        arr.forEach((n,i)=>{
            numberPositions[n] = i
        })
        
        arr.forEach((_,i)=>{
            if (sortedArray[i] != i+1){
                let temp = sortedArray[i]
                sortedArray[i] = sortedArray[numberPositions[i+1]]
                sortedArray[numberPositions[i+1]] = temp
                numberPositions[temp] = numberPositions[i+1]
                numberPositions[i+1] = i
                numberOfSwaps+=1
            }
        })
    
        return numberOfSwaps
    }
    
    0|
    Permalink
  • edwynrangel
    4 weeks ago+ 0 comments

    This is my solution in Go

    func minimumSwaps(arr []int32) int32 {
    
        swaps := int32(0)
        i := 0
        for i < len(arr) {
            if arr[i] != int32(i+1) {
                arr[arr[i]-1], arr[i] = arr[i], arr[arr[i]-1]
                swaps++
            } else {
                i++
            }
        }
    
        return swaps
    }
    
    0|
    Permalink
  • professorParadox
    1 month ago+ 0 comments

    C solution

    int minimumSwaps(int arr_count, int* arr) {
        int swaps = 0;
        for (int i = 1; i <= arr_count; i++)
        {
            if (arr[i-1] != i)
            {
                for (int j = i; j < arr_count; j++)
                {
                    if (i == arr[j])
                    {
                        int temp = arr[i-1];
                        arr[i-1] = arr[j];
                        arr[j] = temp;
                        swaps++;
                        break;
                    }
                }
            }
        }
        
        return swaps;
    }
    
    0|
    Permalink
  • ayouz_asfa45
    1 month ago+ 0 comments
    def minimumSwaps(arr):
        num_swap = 0
        ordred = sorted(arr)
        for i in range(len(arr)):
            if arr == ordred:
                break
            if ordred[i] == arr[i]:
                continue
            else:
                j = arr.index(ordred[i])
                arr[i], arr[j] = arr[j], arr[i]
                num_swap += 1
        return num_swap
    
    0|
    Permalink
Load more conversations

Need Help?


View editorial
View top submissions
  • Blog
  • Scoring
  • Environment
  • FAQ
  • About Us
  • Support
  • Careers
  • Terms Of Service
  • Privacy Policy