496. Next Greater Element I - LeetCode
阿新 • • 發佈:2018-07-05
println leetcode 否則 problem img 子集 技術 problems java
Question
496.?Next Greater Element I
Solution
題目大意:給你一個組數A裏面每個元素都不相同。再給你一個數組B,元素是A的子集,問對於B中的每個元素,在A數組中相同元素之後第一個比它的元素是多少。
思路:把nums1中的元素存儲到一個map裏,遍歷nums2,如果能從map中取到值,就遍歷nums2中後續元素的值並與當前元素做比較,如果存在比當前元素大的值就取該值(第一個),否則返回-1.
Java實現:
public int[] nextGreaterElement(int[] nums1, int[] nums2) { Map<Integer, Integer> map = new HashMap<>(); for (int tmp : nums1) { map.put(tmp, -1); } for (int i = 0; i < nums2.length; i++) { int tmp = nums2[i]; Integer nextGreaterElement = map.get(tmp); if (nextGreaterElement != null) { for (int j=i+1; j<nums2.length; j++) { if (tmp < nums2[j]) { nextGreaterElement = nums2[j]; break; } } map.put(tmp, nextGreaterElement); // System.out.println(tmp + ", " + nextGreaterElement); } } // System.out.println(); int[] result = new int[nums1.length]; for (int i = 0; i < nums1.length; i++) { result[i] = map.get(nums1[i]); // System.out.print(result[i] + ","); } return result; }
496. Next Greater Element I - LeetCode