Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- static int MinimumSwapsToSort(int n, int[] nums){
- HashMap<Integer, Integer> map = new HashMap<>();
- for(int i=0;i<n;i++)
- map.put(nums[i], i);
- Arrays.sort(nums);
- boolean[] visited = new boolean[n];
- Arrays.fill(visited, false);
- int ans = 0;
- for(int i=0;i<n;i++) {
- if(visited[i] || map.get(nums[i]) == i)
- continue;
- int j = i, cycle_size = 0;
- while(!visited[j]) {
- visited[j] = true;
- j = map.get(nums[j]);
- cycle_size++;
- }
- if(cycle_size > 0) {
- ans += (cycle_size - 1);
- }
- }
- return ans;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement