funcintersect(nums1 []int, nums2 []int)[]int{// 排序
sort.Ints(nums1)
sort.Ints(nums2)var i, j intvar ret []intfor i <len(nums1)&& j <len(nums2){// 一个比另一个大,就把另一个指针往后移if nums1[i]> nums2[j]{
j++}elseif nums1[i]< nums2[j]{
i++}else{
ret =append(ret, nums1[i])
i++
j++}}return ret
}
哈希表
funcintersect(nums1 []int, nums2 []int)[]int{var ret []int
m :=map[int]int{}for_, i :=range nums1 {
m[i]++}for_, i :=range nums2 {// 该数在A数组中数量大于0if m[i]>0{// 将该数数量减小1
m[i]--// 把该数放到结果集
ret =append(ret, i)}}return ret
}
funcmerge(nums1 []int, m int, nums2 []int, n int){var i, j intfor i <len(nums1)&& j <len(nums2){if nums1[i]>= nums2[j]{// 挪出一个空位for a := m + j; a > i; a--{
nums1[a], nums1[a-1]= nums1[a-1], nums1[a]}// 放j进去
nums1[i]= nums2[j]// 去判断下一个j
j ++}
i ++}// j剩下的都大,直接放if j <len(nums2){for k := j; k <len(nums2); k++{
nums1[m+k]= nums2[k]}}return}
先放再排序
funcmerge(nums1 []int, m int, nums2 []int, n int){for i :=0; i <len(nums2); i++{
nums1[m+i]= nums2[i]}
sort.Ints(nums1)return}
leetcode 350. 两个数组的交集 II排序func intersect(nums1 []int, nums2 []int) []int { // 排序 sort.Ints(nums1) sort.Ints(nums2) var i, j int var ret []int for i < len(nums1) && j < len(nums...