forked from bmanandhar/python-hacker-rank
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathminimumSwaps.py
74 lines (46 loc) · 1.69 KB
/
minimumSwaps.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Thu Dec 5 13:58:52 2019
@author: bijayamanandhar
"""
"""
You are given an unordered array consisting of consecutive
integers [1, 2, 3, ..., n] without any duplicates. You are
allowed to swap any two elements. You need to find the minimum
number of swaps required to sort the array in ascending order.
For example, given the array we perform the following steps:
i arr swap (indices)
0 [7, 1, 3, 2, 4, 5, 6] swap (0,3)
1 [2, 1, 3, 7, 4, 5, 6] swap (0,1)
2 [1, 2, 3, 7, 4, 5, 6] swap (3,4)
3 [1, 2, 3, 4, 7, 5, 6] swap (4,5)
4 [1, 2, 3, 4, 5, 7, 6] swap (5,6)
5 [1, 2, 3, 4, 5, 6, 7]
It took swaps to sort the array.
Function Description
Complete the function minimumSwaps in the editor below.
It must return an integer representing the minimum number
of swaps to sort the array.
minimumSwaps has the following parameter(s):
arr: an unordered array of integers
Input Format
The first line contains an integer, , the size of .
The second line contains space-separated integers .
Constraints
Output Format
Return the minimum number of swaps to sort the given array."""
class Solution:
def minimumSwaps(self, arr):
arr = [i-1 for i in arr]
swap = i = 0
while i < len(arr):
if arr[i] == i:
i += 1
continue
arr[arr[i]], arr[i] = arr[i], arr[arr[i]]
swap += 1
return swap
if __name__=='__main__':
S = Solution()
print(S.minimumSwaps([4,3,1,6,2,5]))