😎풀이

  1. 뒤에서 부터 배열 순회
  2. 가장 큰 nums[j]에 해당하는 수를 stack에 저장
  3. 두번째로 큰 nums[k]에 해당하는 수를 last에 저장
  4. 현재 요소를 nums[i]라고 가정했을 때, last보다 작다면, 세 수가 모두 등장한 것이므로 true 반환
  5. 132 pattern을 찾지 못한 경우 false 반환
function find132pattern(nums: number[]): boolean {
    const stack = []
    let last = -Infinity
    for(let i = nums.length; i >= 0; i--) {
        const cur = nums[i]
        if(cur < last) return true
        while(stack.length > 0 && cur > stack[stack.length - 1]) {
            last = stack.pop()
        }
        stack.push(cur)
    }
    return false
};
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글