42 lines
775 B
Go
42 lines
775 B
Go
package q2215
|
|
|
|
import "slices"
|
|
|
|
func skip(nums []int, i int) int {
|
|
if i < len(nums) {
|
|
for c := nums[i]; i < len(nums) && nums[i] == c; i++ {
|
|
}
|
|
}
|
|
return i
|
|
}
|
|
|
|
func findDifference(nums1 []int, nums2 []int) [][]int {
|
|
slices.Sort(nums1)
|
|
slices.Sort(nums2)
|
|
d1 := []int{}
|
|
d2 := []int{}
|
|
|
|
i1, i2 := 0, 0
|
|
for i1 < len(nums1) || i2 < len(nums2) {
|
|
// num2[i2] is unique
|
|
if i1 == len(nums1) || i2 < len(nums2) && nums2[i2] < nums1[i1] {
|
|
d2 = append(d2, nums2[i2])
|
|
i2 = skip(nums2, i2)
|
|
continue
|
|
}
|
|
|
|
// num1[i1] is unique
|
|
if i2 == len(nums2) || i1 < len(nums1) && nums1[i1] < nums2[i2] {
|
|
d1 = append(d1, nums1[i1])
|
|
i1 = skip(nums1, i1)
|
|
continue
|
|
}
|
|
|
|
i1 = skip(nums1, i1)
|
|
i2 = skip(nums2, i2)
|
|
}
|
|
|
|
return [][]int{d1, d2}
|
|
}
|
|
|
|
var _ = findDifference
|