leetcode-496

161 阅读1分钟

题目描述:具体描述见原题。简单来说就是按照一定规则寻找下一个更大元素。

解题思路:按照题目要求规则遍历寻找即可。具体描述见代码。

具体代码:

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,即将开始努力寻找下一个有趣的三年。