1. 程式人生 > >LeetCode496-下一個更大的元素(遍歷)

LeetCode496-下一個更大的元素(遍歷)

nums1是nums2的子集,並且不會有重複的元素。

要找到nums1中的一個a,a在nums2裡面,找到nums2裡面,在a右邊,與a最接近的,比a大的數字即可。

最簡單的方法。

1、在nums2中遍歷,直到遇到a,記錄a的位置。然後從這個位置開始,繼續遍歷,找到一個大於a的數字即可。

 

這樣在右邊的話,可能第一次就找到大於a的數字了,也可能在最後。

 

因為是在右邊找,有一種反向的思路,就是從右邊開始遍歷,遍歷到a,就行。

在這過程中,如果有大於a的,就記錄。因為是從左往右的,越後出現的大於a的數字,就是最接近的。

 

用最直接的思路,把題目解決了才是最重要的!!!!

 

程式碼如下

/**
 * @param {number[]} findNums
 * @param {number[]} nums
 * @return {number[]}
 */
var nextGreaterElement = function(findNums, nums) {
    let result = [];
    for(let item of findNums){

        let bigger = item;
        
        let i=nums.length-1;
        
        while(true
){ //右邊較大的意思是,在右邊且大於item即可 if(nums[i]>item){ bigger = nums[i]; } //相等就是位置到了,要退出了 if(nums[i]===item||i<0){ break; } i--; } if(i>=0&&bigger!=item){ result.push(bigger); }
else{ result.push(-1); } } return result; };