Java/496. Next Greater Element I 下一个更大元素

题目


代码部分一(9ms 78.68%)

class Solution {
    public int[] nextGreaterElement(int[] nums1, int[] nums2) {
        int len1 = nums1.length;
        int len2 = nums2.length;
        int[] res = new int[len1];
        
        for(int i = 0; i < len1; i++){
            int temp = nums1[i];
            for(int j = 0; j < len2; j++){
                if(nums2[j] == temp){
                    int n = j+1;
                    while(n < len2 && nums2[n] <= temp){
                        n++;
                    }
                    if(n == len2) res[i] = -1;
                    else res[i] = nums2[n];
                    
                    break;
                }
            }
        }
        
        return res;
    }
}

代码部分二(5ms 99.30%)

class Solution {
    public int[] nextGreaterElement(int[] nums1, int[] nums2) {
        HashMap<Integer, Integer> map = new HashMap<>();
        for(int i = 0; i < nums2.length; i++){
            int key = 0;
            for(int j =  i + 1; j < nums2.length; j++){
                if(nums2[j] > nums2[i]){
                    map.put(nums2[i], nums2[j]);
                    key = 1;
                    break;
                }
            }
            if(key != 1) map.put(nums2[i], -1);
        }
        int[] res = new int[nums1.length];
        for(int i = 0; i < nums1.length; i++){
            res[i] = map.get(nums1[i]);
        }
        
        return res;
    }
}

猜你喜欢

转载自blog.csdn.net/qq_38959715/article/details/84348063