class Solution {
public:
int partitionDisjoint(vector<int>& nums) {
int size = nums.size();
vector<int> forward(size);
vector<int> backward(size);
backward[size - 1] = nums[size - 1];
for (int i = size - 2; i >= 0; --i)
backward[i] = min(backward[i + 1], nums[i]);
forward[0] = nums[0];
for (int i = 0; i < size - 1; ++i) {
if (i > 0)
forward[i] = max(forward[i - 1], nums[i]);
if (forward[i] <= backward[i + 1])
return i + 1;
}
return 0;
}
};
class Solution {
public:
int partitionDisjoint(vector<int>& nums) {
int size = nums.size();
int max_ = nums[0];
int cur_ = nums[0];
int ans = 1;
for (int i = 1; i < size; ++i) {
if (cur_ > nums[i]) {
ans = i + 1;
cur_ = max_;
}
max_ = max(max_, nums[i]);
}
return ans;
}
};
'알고리즘 > leetcode' 카테고리의 다른 글
Two Sum - easy (0) | 2021.08.02 |
---|---|
Making A Large Island (0) | 2021.08.01 |
Map Sum Pairs (0) | 2021.07.31 |
Push Dominoes (0) | 2021.07.22 |
leetcode - Find the Town Judge - easy (0) | 2020.09.22 |