Skip to content

Latest commit

 

History

History
63 lines (54 loc) · 1.43 KB

File metadata and controls

63 lines (54 loc) · 1.43 KB

Array

Screen Shot 2023-01-07 at 3 59 04 PM

Three Pointers

/**
 * @param {number[]} nums1
 * @param {number[]} nums2
 * @return {number[]}
 */
var nextGreaterElement = function(nums1, nums2) {
    let ptr = 0;
    let stack = [];

    for(let i = 0; i < nums1.length; i++) {
        for(let j = 0; j < nums2.length; j++) {
            if(nums1[i] === nums2[j]) {
                ptr = j;
                while(ptr < nums2.length) {
                    if(nums2[ptr] > nums2[j]) {
                        stack.push(nums2[ptr]);
                        break;
                    } 
                    ptr++;
                    if(ptr === nums2.length) {
                        stack.push(-1);
                    }
                }
            }
        }
    }
    return stack;
};

Two Pointers

/**
 * @param {number[]} nums1
 * @param {number[]} nums2
 * @return {number[]}
 */
var nextGreaterElement = function(nums1, nums2) {
    return nums1.map(n => {
        let ptr = nums2.indexOf(n);
            // find the next greater element's index
            while (nums2[++ptr] < n);
            // -1 if not found
            if (ptr >= nums2.length) {
                ptr = -1;
            } else {
                ptr = nums2[ptr];
            }
        
        
        return ptr;
    });
};