문제 출처:https://leetcode.com/problems/next-greater-element-i/
문제 분석
해당 문제는 input으로 unique한 num1과 num2가 주어집니다. num1의 element들은 num2의 부분 집합입니다. 각 num1의 숫자로 num2의 위치를 구한 후 그보다 오른쪽에 더 큰 숫자가 있는지 찾는 문제입니다. 찾았다면 그 수를 출력하며, 없다면 -1을 출력합니다. 저는 다음과 같이 풀었습니다. 코드는 다음과 같습니다:
class Solution {
public:
vector<int> nextGreaterElement(vector<int>& nums1, vector<int>& nums2) {
vector<int> answer ;
for(int num1 : nums1){
int greater = -1 ;
auto it = find(nums2.begin(), nums2.end(), num1);
for(it += 1; it != nums2.end() ; it++){
if(num1 < *it){
greater = *it ;
break ;
}
}
answer.push_back(greater) ;
}
return answer ;
}
};
해당 문제는 Github에서도 보실 수 있습니다:
https://github.com/gurcks8989/CodingTest/blob/master/LeetCode/P496_Next_Greater_Element_I.cpp
훈수 및 조언은 언제든 환영입니다.