Advertisement
vladimirVenkov

496. Next Greater Element I

Jul 17th, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 0.90 KB | None | 0 0
  1.  public int[] nextGreaterElement(int[] nums1, int[] nums2) {
  2.         int max = 0;
  3.         for (int i = 0; i < nums2.length; i++) {
  4.             if (nums2[i] > max) {
  5.                 max = nums2[i];
  6.             }
  7.         }
  8.         int[] pos = new int[max + 1];
  9.  
  10.         if (nums2.length > 0) {
  11.             pos[nums2[nums2.length - 1]] = -1;
  12.         }
  13.         for (int i = nums2.length - 2, j; i >= 0; i--) {
  14.             j = i + 1;
  15.             while (nums2[j] < nums2[i]) {
  16.                 j = pos[nums2[j]];
  17.                 if (j < 0) {
  18.                     break;
  19.                 }
  20.             }
  21.             pos[nums2[i]] = j;
  22.         }
  23.  
  24.         int[] ans = new int[nums1.length];
  25.         for (int i = 0; i < nums1.length; i++) {
  26.             ans[i] = -1;
  27.             if (pos[nums1[i]] >= 0) {
  28.                 ans[i] = nums2[pos[nums1[i]]];
  29.             }
  30.         }
  31.         return ans;
  32.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement