Advertisement
1988coder

496. Next Greater Element I

Dec 23rd, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.06 KB | None | 0 0
  1. /*
  2. Refer: https://leetcode.com/problems/next-greater-element-i/discuss/97595/Java-10-lines-linear-time-complexity-O(n)-with-explanation
  3.  
  4. Time Complexity: O(M + N)
  5. Space Complexity:
  6.     Without result space: O(N)
  7.     With result space: O(M + N)
  8.  
  9. M = length of nums1
  10. N = length of nums2
  11. */
  12. class Solution {
  13.     public int[] nextGreaterElement(int[] nums1, int[] nums2) throws IllegalArgumentException {
  14.         if (nums1 == null || nums2 == null) {
  15.             throw new IllegalArgumentException("Input array is null");
  16.         }
  17.        
  18.         Map<Integer, Integer> map = new HashMap();
  19.         Stack<Integer> stack = new Stack();
  20.        
  21.         for (int num : nums2) {
  22.             while (!stack.isEmpty() && stack.peek() < num) {
  23.                 map.put(stack.pop(), num);
  24.             }
  25.             stack.push(num);
  26.         }
  27.        
  28.         int[] result = new int[nums1.length];
  29.        
  30.         for (int i = 0; i < nums1.length; i++) {
  31.             result[i] = map.getOrDefault(nums1[i], -1);
  32.         }
  33.        
  34.         return result;
  35.     }
  36. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement