코린이의 소소한 공부노트

[LeetCode/Easy] 496. Next Greater Element I 본문

코딩테스트 풀이/JAVA

[LeetCode/Easy] 496. Next Greater Element I

무지맘 2023. 2. 26. 23:58

1. Input

1) int[] nums1

2) int[] nums2

 

2. Output

1) nums1[i]의 요소를 nums2에서 찾은 다음, 해당 요소의 오른쪽에 있는 nums2의 요소 중 nums1[i]보다 큰 첫 번째 요소를 차례대로 담은 int[]

- 만약 nums2에서 nums1[i]보다 큰 요소를 찾지 못했다면 -1을 저장한다.

 

3. Constraint

 

4. Example

Input: nums1 = [4,1,2], nums2 = [1,3,4,2] -> Output: [-1,3,-1]

설명:

- nums1[0]==4 -> nums2[2]==4 -> nums2에서 index>2 인 요소 중 4보다 큰 요소가 없으므로 -1을 저장

- nums1[1]==1 -> nums2[0]==1 -> nums2에서 index>0 인 요소 중 1보다 큰 첫 번째 요소는 3이므로 3을 저장

- nums1[2]==2 -> nums2[3]==2 -> nums2에서 index>3 인 요소는 없으므로 -1을 저장

 

5. Code

1) 첫 코드(2023/02/26)

int[] answer = new int[nums1.length];
for(int i=0 ; i<nums1.length ; i++){
    for(int j=0 ; j<nums2.length ; j++){
        if(nums2[j]==nums1[i]){
            answer[i] = j; break;
        }
    }
    boolean find = false;
    for(int j=answer[i]+1 ; j<nums2.length ; j++){
        if(nums2[j]>nums1[i]){
            find = true; answer[i] = nums2[j]; break;
        }
    }
    if(!find) answer[i] = -1;
}
return answer;

- 스택을 이용하는 방법은 잘 모르겠다.