1122. 数组的相对排序

2024-07-07 19:10:18 浏览数 (1)

链接

给你两个数组,arr1 和 arr2,

arr2 中的元素各不相同

arr2 中的每个元素都出现在 arr1 中

对 arr1 中的元素进行排序,使 arr1 中项的相对顺序和 arr2 中的相对顺序相同。未在 arr2 中出现过的元素需要按照升序放在 arr1 的末尾。

示例:

代码语言:javascript复制
输入:arr1 = [2,3,1,3,2,4,6,7,9,2,19], arr2 = [2,1,4,3,9,6]
输出:[2,2,2,1,4,3,3,9,6,7,19]
代码语言:javascript复制
func relativeSortArray(arr1 []int, arr2 []int) []int {
    m :=make(map[int][]int)
    for _,v :=range  arr2{
    	m[v]= make([]int,0)
	}
	var other []int
	for _,v:=range arr1{
		if l,ok:=m[v];ok{
			l = append(l,v)
			m[v]= l
		}else {
			other = append(other,v)
		}
	}
    sort.Ints(other)
	var res []int
	for _,v :=range  arr2{
		res = append(res,m[v]...)
	}
	res = append(res,other...)
	return res
}

0 人点赞