LeetCode - 503. 다음 더 큰 요소 II (Next Greater Element II) [중간] - 분석 및 코드 (Java)

LeetCode - 503. 다음 더 큰 요소 II [Next Greater Element II] [중간] - 분석 및 코드 [자바]
  • 하나, 제목
  • 2. 분석 및 코드
  • 1. 단조 로 운 창고
  • (1) 사고방식
  • (2) 코드
  • (3) 결과

  • 3. 기타
  • 제목
    순환 배열 (마지막 요소 의 다음 요 소 는 배열 의 첫 번 째 요소) 을 지정 하고 모든 요소 의 다음 요 소 를 출력 합 니 다.숫자 x 의 다음 더 큰 요 소 는 배열 에 따라 순 서 를 옮 겨 다 니 는 것 입 니 다. 이 숫자 뒤의 첫 번 째 는 그것 보다 더 큰 숫자 입 니 다. 이것 은 다음 더 큰 숫자 를 순환 적 으로 검색 해 야 한 다 는 것 을 의미 합 니 다.존재 하지 않 으 면 출력 - 1.
    예시 1:
      : [1,2,1]
      : [2,-1,2]
      :     1           2;
       2           ; 
        1               ,     2。
      :             10000。
    

    출처: 스냅 백 (LeetCode) 링크:https://leetcode-cn.com/problems/next-greater-element-ii 저작권 은 인터넷 에 귀속 된다.상업 전 재 는 정부 에 연락 하여 권한 을 부여 해 주 십시오. 비 상업 전 재 는 출처 를 밝 혀 주 십시오.
    2. 분석 및 코드
    1. 단조 창고
    (1) 사고방식
    단조 로 운 스 택 을 설계 하여 아래 에서 위로 큰 것 부터 작은 것 까지 일치 하지 않 는 요 소 를 저장 합 니 다.새 요소 가 스 택 꼭대기 보다 크 면 새 요소 의 크기 는 스 택 꼭대기 요소 의 다음 더 큰 요소 입 니 다. 스 택 이 비어 있 거나 새 요소 가 스 택 꼭대기 보다 작 을 때 까지 새 요 소 를 스 택 에 추가 합 니 다.배열 이 순환 할 수 있 기 때문에 두 번 째 로 옮 겨 다 닐 수 있 고 각 요소 가 선행 위치 에 있 는 다음 더 큰 요 소 를 찾 을 수 있 도록 합 니 다.두 번 옮 겨 다 니 면 스 택 에 남 은 요 소 는 원래 배열 의 최대 값 입 니 다.주어진 배열 에 따라 요소 의 색인 에서 요소 의 크기 를 직접 얻 을 수 있 기 때문에 스 택 에 색인 을 저장 하고 처리 하면 됩 니 다.
    (2) 코드
    class Solution {
         
        public int[] nextGreaterElements(int[] nums) {
         
            int n = nums.length;
            int[] ans = new int[n];
            if (n == 0)
                return ans; 
            Arrays.fill(ans, -1);
            Stack<Integer> sta = new Stack<>();//   ,                   
            for (int i = 0; i < n; i++) {
         
                while (!sta.empty() && nums[sta.peek()] < nums[i])
                    ans[sta.pop()] = nums[i];
                sta.add(i);
            }
            for (int i = 0; i < n; i++) {
         
                while (!sta.empty() && nums[sta.peek()] < nums[i])
                    ans[sta.pop()] = nums[i];
            }
            return ans;
        }
    }
    

    (3) 결과
    실행 시: 8ms, 모든 자바 제출 에서 85.75% 의 사용 자 를 격파 하 였 습 니 다.메모리 소모: 40.2 MB, 모든 자바 제출 에서 49.36% 의 사용 자 를 격파 하 였 습 니 다.
    기타
    잠시 없다.

    좋은 웹페이지 즐겨찾기