LeetCode 496. Next Greater Element I
来源:互联网 发布:js获取HTML对象 编辑:程序博客网 时间:2024/06/08 08:18
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.
我的解法如下
class Solution { public int[] nextGreaterElement(int[] nums1, int[] nums2) { int i=0; int j=0; int []res=new int[nums1.length]; while(i<nums1.length){ if(nums1[i]==nums2[j]){ j=j+1; while(j<nums2.length&&nums1[i]>=nums2[j]){ j++; } if(j==nums2.length){ res[i]=-1; j=0; i++; } else{ res[i]=nums2[j]; j=0; i++; } } else{ j++; } } return res; }}
看discuss可以使用栈,先进后出,这样可以存储下一个最大的元素
public int[] nextGreaterElement(int[] findNums, int[] nums) { Map<Integer, Integer> map = new HashMap<>(); // map from x to next greater element of x Stack<Integer> stack = new Stack<>(); for (int num : nums) { while (!stack.isEmpty() && stack.peek() < num) map.put(stack.pop(), num); stack.push(num); } for (int i = 0; i < findNums.length; i++) findNums[i] = map.getOrDefault(findNums[i], -1); return findNums; }
- 【Leetcode】496. Next Greater Element I
- leetcode -- 496. Next Greater Element I 【栈】
- 【LeetCode】496. Next Greater Element I
- LeetCode 496. Next Greater Element I
- LeetCode 496. Next Greater Element I
- leetcode 496. Next Greater Element I
- LeetCode-496. Next Greater Element I
- [LeetCode]496. Next Greater Element I
- LeetCode 496. Next Greater Element I
- LeetCode 496. Next Greater Element I
- LeetCode | 496. Next Greater Element I
- 【LeetCode】496. Next Greater Element I
- 【LeetCode】496. Next Greater Element I
- Leetcode 496. Next Greater Element I
- LeetCode:496. Next Greater Element I
- LeetCode OJ 496. Next Greater Element I
- 【C++】【LeetCode】496. Next Greater Element I
- LeetCode 496. Next Greater Element I
- oracle返回表类型
- mysql主从数据库配置(主服务器某库,从服务器某些表)
- Linux CentOS6离线安装Jupyter notebook
- 使用windbg查看程序崩溃处
- Swagger(一) SpringBoot整合Swagger2简单的例子
- LeetCode 496. Next Greater Element I
- webuploader上传按钮点了没反应,终于解决了!
- [leetCode] 分治法之 Kth Largest Element Selection Algorithm实现 (6ms,超过99%)
- python 升级
- python module import(自定义module如何导入)
- 9月21日云栖精选夜读:专访新浪微博黄波:千人千面,机器学习赋能用户信息流消费
- Hadoop生态系统架构
- Android LinearLayout属性解析
- 短视频SDK如何做到视频原始比例裁剪?