1. 题目分析
仔细理解题意,这道题我靠可以通过两个嵌套循环,再做比较来解决
2. 代码实现
2.1. Python代码
class Solution(object):
def nextGreaterElement(self, nums1, nums2):
"""
:type nums1: List[int]
:type nums2: List[int]
:rtype: List[int]
"""
target = []
for i in nums1:
flag = False
for j in nums2:
if(i == j):
flag = True
if(i < j and flag):
target.append(j)
flag = False
break
if flag:
target.append(-1)
return target
2.2. Java代码
public class NextGreaterElement {
public int[] nextGreaterElement(int[] nums1, int[] nums2) {
int[] target = new int[nums1.length];
int n = 0;
for(int i = 0;i < nums1.length;i++){
boolean flag = false;
for(int j = 0;j < nums2.length;j++){
if(nums1[i] == nums2[j]){
flag = true;
}
if(flag){
if(nums1[i] < nums2[j]){
target[n] = nums2[j];
flag = false;
n++;
break;
}
}
}
if(flag){
target[n] = -1;
n++;
}
}
return target;
}
}
3. 还有没有其它的解法呢?
对比大小之类的问题,我们可以考虑单调栈
3.1. 什么是单调栈?
顾名思义,就是单调递增或者单调递减的栈
3.2. 具体解法
3.3. 总结
简而言之,就是用单调栈在加上哈希映射来解决问题,代码我就不给出来了,大家可以自己尝试一下。