LeetCode496-下一個更大的元素(遍歷)
阿新 • • 發佈:2018-11-16
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; };