← Playground

Added Minimum Swaps 2 https://www.hackerrank.com/challenges/minimum-swaps-2/problem?h_l=interview&playlist_slugs%5B%5D=interview-preparation-kit&playlist_slugs%5B%5D=arrays

68fb3d3f6332dc3dc0d5281d07ff04d03e120c5e · darakna · Jan 12, 2020 00:17

+72 · 1 file changed

  • Pyton_stuff/hackerRank/minimum_swaps.py +72 −0
diff --git a/Pyton_stuff/hackerRank/minimum_swaps.py b/Pyton_stuff/hackerRank/minimum_swaps.py
new file mode 100644
index 0000000..8cc52e5
--- /dev/null
+++ b/Pyton_stuff/hackerRank/minimum_swaps.py
@@ -0,0 +1,72 @@
+#!/bin/python3
+#passing 8/14
+
+import math
+import os
+import random
+import re
+import sys
+import time
+
+def check_if_sorted(q):
+    for elem in range(len(q[:-1])):
+        if q[elem] > q[elem + 1]:
+            return False
+    return True
+
+
+def genuineSwap(arr):
+    for elem in range(len(arr)):
+        if arr[elem] == elem + 1:
+            continue
+        if arr[arr[elem] - 1] == elem + 1:
+            a = arr[elem]
+            index_a = elem
+            b = arr[arr[elem] - 1]
+            index_b = arr[elem] - 1
+            arr[index_a] = b
+            arr[index_b] = a
+            return True, arr
+    return False, arr
+
+
+def extendedSwap(arr):
+    swaps = 0
+    while not check_if_sorted(arr):
+        swap_check, arr = genuineSwap(arr)
+        if swap_check:
+            swaps += 1
+            continue
+        for elem in range(len(arr)):
+            if arr[elem] == elem + 1:
+                continue
+            else:
+                a = arr[elem]
+                index_a = elem
+                b = arr[arr[elem] - 1]
+                index_b = arr[elem] - 1
+                arr[index_a] = b
+                arr[index_b] = a
+                swaps += 1
+                break
+
+    return swaps
+
+# Complete the minimumSwaps function below.
+def minimumSwaps(arr):
+    min_swp = extendedSwap(arr)
+    return min_swp
+
+arr1 = [7, 1, 3, 2, 4, 5, 6]
+arr1_num = 5
+arr2 = [4, 3, 1, 2]
+arr2_num = 3
+arr3 = [2, 3, 4, 1, 5]
+arr3_num = 3
+arr4 = [1, 3, 5, 2, 4, 6, 7]
+arr4_num = 3
+
+print(arr1_num, " == ", minimumSwaps(arr1))
+print(arr2_num, " == ", minimumSwaps(arr2))
+print(arr3_num, " == ", minimumSwaps(arr3))
+print(arr4_num, " == ", minimumSwaps(arr4))