581. Shortest Unsorted Continuous Subarray

김대익·2022년 4월 4일
0

배열이 주어졌을때 오름차순 정렬이 되려면 최소한 몇개의 원소를 정렬시켜야하는지 리턴하시오.

[2,6,4,8,10,9,15] -> 6,4,8,10,9를 정렬해야하므로 5를 리턴


brute force방식

풀어본 코드

#include <iostream> 
#include <algorithm>

class Solution {
public:
    int findUnsortedSubarray(vector<int>& nums) {
        vector<int> sortedNums = nums;
        sort(sortedNums.begin(), sortedNums.end()); 
        int min = nums.size() - 1;
        int max = nums.size() - 1;
        
        for (int i = 0; i < nums.size(); i++) {
            if (nums[i] != sortedNums[i]) {
                if (i < min) {
                    min = i;
                    max = i;
                } else if (i > min && i > max) {
                    max = i;
                }
            }
        }
        if (min == max) return 0;
        return max - min + 1;
    }
};

그래프를 그려서 해결하는 방식


0개의 댓글