Scribbling

[LeetCode] 2340. Minimum Adjacent Swaps to Make a Valid Array 본문

Computer Science/Algorithms & Data Structures

[LeetCode] 2340. Minimum Adjacent Swaps to Make a Valid Array

focalpoint 2024. 7. 2. 16:19

https://leetcode.com/problems/minimum-adjacent-swaps-to-make-a-valid-array/description/

 

1. Python

class Solution:
    def minimumSwaps(self, nums: List[int]) -> int:
        if len(nums) <= 1:
            return 0

        minVal = min(nums)
        maxVal = max(nums)

        for i in range(len(nums)):
            if nums[i] == minVal:
                minIdx = i
                break

        for i in range(len(nums)-1, -1, -1):
            if nums[i] == maxVal:
                maxIdx = i
                break

        if minIdx == maxIdx:
            return 0
        elif minIdx < maxIdx:
            return minIdx + len(nums) - maxIdx - 1
        else:
            return minIdx + len(nums) - maxIdx - 2

 

2. C++

class Solution {
public:
    int minimumSwaps(vector<int>& nums) {
        if (nums.size() <= 1) return 0;
		int minVal = *min_element(nums.begin(), nums.end());
		int maxVal = *max_element(nums.begin(), nums.end());
		int minIdx, maxIdx;
		for (int i=0; i<nums.size(); i++) {
			if (nums[i] == minVal) {
				minIdx = i;
				break;
			}
		}
		for (int i=nums.size()-1; i>=0; i--) {
			if (nums[i] == maxVal) {
				maxIdx = i;
				break;
			}
		}
		if (minIdx == maxIdx) return 0;
		else if (minIdx < maxIdx) return minIdx + nums.size() - maxIdx - 1;
		else return minIdx + nums.size() - maxIdx - 2;
    }
};

'Computer Science > Algorithms & Data Structures' 카테고리의 다른 글

[Programmers] 방의 개수  (0) 2024.07.02
[Programmers] 순위  (0) 2024.06.28
[Programmers] 가장 먼 노드  (0) 2024.06.28
[Programmers] 입국심사  (0) 2024.06.27
[Programmers] 징검다리  (0) 2024.06.27