Java详解获取数组中每个元素的下一个更大元素
1. 题目解析
给定两个数组`nums1`和`nums2`,均包含不重复的元素,并且`nums1`是`nums2`的子集。编写一个算法,获取`nums1`中每个数字在`nums2`中对应的下一个更大元素。
因为数组`nums1`是`nums2`的子集,所以先获取`nums2`中每个元素的下一个更大元素,构建一个`map`,然后遍历`nums1`,构建最终的返回数组。
首先,我们需要编写一个函数,通过栈获取一个数组中每个元素的下一个更大元素,构建一个`map`返回。
2. 实现算法
已经有了数组`nums2`中每个元素对应的下一个更大元素的`map`,我们只需遍历`nums1`中每个元素,从`map`中获取值,构建返回数组即可。
```java
public int[] nextGreaterElement(int[] nums1, int[] nums2) {
Map
Stack
for (int num : nums2) {
while (!() () < num) {
map.put(stack.pop(), num);
}
stack.push(num);
}
int[] result new int[nums1.length];
for (int i 0; i < nums1.length; i ) {
result[i] (nums1[i], -1);
}
return result;
}
```
3. 编写本地测试方法
为了验证算法的正确性,我们编写一个本地测试方法,并观察控制台输出结果是否符合预期。
```java
public static void main(String[] args) {
Solution solution new Solution();
int[] nums1 {4, 1, 2};
int[] nums2 {1, 3, 4, 2};
int[] result (nums1, nums2);
((result));
}
```
4. 运行本地测试方法
运行本地测试方法,观察控制台输出结果是否符合预期。如果输出结果与预期一致,则说明本地测试通过。
5. 平台提交算法
经过本地测试的验证,我们可以将算法提交到平台进行测试,以确保算法的正确性和效率。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。