国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

496. Next Greater Element I (E)

2019-11-08 01:56:44
字體:
來源:轉載
供稿:網友

You are given two arrays (without duplicates) nums1 and nums2 where nums1’s elements are subset of nums2. Find all the next greater numbers for nums1's elements in the corresponding places of nums2.

The Next Greater Number of a number x in nums1 is the first greater number to its right in nums2. If it does not exist, output -1 for this number.

Example 1:

Input: nums1 = [4,1,2], nums2 = [1,3,4,2].Output: [-1,3,-1]Explanation:    For number 4 in the first array, you cannot find the next greater number for it in the second array, so output -1.    For number 1 in the first array, the next greater number for it in the second array is 3.    For number 2 in the first array, there is no next greater number for it in the second array, so output -1.

Example 2:

Input: nums1 = [2,4], nums2 = [1,2,3,4].Output: [3,-1]Explanation:    For number 2 in the first array, the next greater number for it in the second array is 3.    For number 4 in the first array, there is no next greater number for it in the second array, so output -1.

Note:

All elements in nums1 and nums2 are unique.The length of both nums1 and nums2 would not exceed 1000.

Subscribe to see which companies asked this question.

My naive Solution:

public class Solution {    public int[] nextGreaterElement(int[] findNums, int[] nums) {        int[] re=new int[findNums.length];        for(int i=0;i<findNums.length;++i){            int n=findNums[i];            int j=0;            boolean flag=false;            while(nums[j]!=n)                ++j;            while(j<nums.length){                if(nums[j]>n){                    re[i]=nums[j];                    flag=true;                    break;                }                    j++;                }                if(!flag)                re[i]=-1;        }        return re;    }}Use Stack:

public class Solution {    public int[] nextGreaterElement(int[] findNums, int[] nums) {        Stack<Integer> stack=new Stack<Integer>();        Map<Integer,Integer> map=new HashMap<Integer,Integer>();        for(int i:nums){            while(!stack.empty()&&stack.peek()<i)                map.put(stack.pop(),i);            stack.push(i);            }        while(!stack.empty())            map.put(stack.pop(),-1);        for(int i=0;i<findNums.length;++i)            findNums[i]=map.get(findNums[i]);        return findNums;    }}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 澄迈县| 南京市| 泰州市| 铜鼓县| 丹棱县| 敖汉旗| 左权县| 民和| 梁平县| 株洲市| 石家庄市| 永昌县| 江门市| 子洲县| 东港市| 邵武市| 泸西县| 山阳县| 宁安市| 南部县| 麦盖提县| 望都县| 南投县| 彰化县| 阳朔县| 邹城市| 来凤县| 蚌埠市| 绥中县| 巫溪县| 新平| 项城市| 右玉县| 康定县| 高尔夫| 万荣县| 乌兰县| 即墨市| 彩票| 喀什市| 象州县|