stack和map用好就行spa
1 public class Solution { 2 public int[] nextGreaterElement(int[] findNums, int[] nums) { 3 Stack maxNumSeq = new Stack(); 4 Map<Integer, Integer> greaterNum = new HashMap<Integer, Integer>(); 5 for (int i = nums.length-1; i >= 0; i--) { 6 while (maxNumSeq.empty() != true) { 7 int num = (int)maxNumSeq.peek(); 8 if (nums[i] < num) { 9 greaterNum.put(nums[i], num); 10 maxNumSeq.push(nums[i]); 11 break; 12 } 13 else maxNumSeq.pop(); 14 } 15 if (maxNumSeq.empty() == true) { 16 maxNumSeq.push(nums[i]); 17 greaterNum.put(nums[i], -1); 18 } 19 } 20 int[] ans = new int[findNums.length]; 21 for (int i = 0; i < ans.length; i++) { 22 ans[i] = greaterNum.get(findNums[i]); 23 } 24 return ans; 25 } 26 }