배열이 주어졌을때 오름차순 정렬이 되려면 최소한 몇개의 원소를 정렬시켜야하는지 리턴하시오.
[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;
}
};
그래프를 그려서 해결하는 방식