题目描述:具体描述见原题。简单来说就是按照一定规则寻找下一个更大元素。
解题思路:按照题目要求规则遍历寻找即可。具体描述见代码。
具体代码:
func nextGreaterElement(nums1 []int, nums2 []int) []int {
res := make([]int, 0)
if len(nums1) == 0 || len(nums2) == 0 { //边界条件,如果某一个数组为空,直接返回。
return res
}
m, tag := make(map[int]int, 0), false
for i, n := range nums2 { // 使用map记录查找范围所有元素及对应位置,方便直接根据元素获取下标。
m[n] = i
}
for i := 0; i < len(nums1); i++ { // 遍历查找每个元素
tag = false
for j := m[nums1[i]]; j < len(nums2); j++ {
if nums2[j] > nums1[i] {
res = append(res, nums2[j]) // 如果找到,值入栈,结束本次查找。由于题目中说没有重复元素,break可以加快执行速度
tag = true
break
}
}
if tag == false { // 如果没找到,-1 入栈
res = append(res, -1)
}
}
return res
}
补充说明:因为题目限制,所以这是一道简单题。唯一的技巧可能就是使用map记录元素及对应下标。今天入职三周年hhhh,即将开始努力寻找下一个有趣的三年。