var intersect = function (nums1, nums2) {
var map = {}
var res = []
for (var i = 0; i < nums1.length; i++) {
if (map[nums1[i]]) {
map[nums1[i]]++
} else {
map[nums1[i]] = 1
}
}
for (var i = 0; i < nums2.length; i++) {
if (map[nums2[i]] && map[nums2[i]] > 0) {
res.push(nums2[i])
map[nums2[i]]--
}
}
return res
};
var intersect = function (nums1, nums2) {
nums1.sort((a, b) => a - b)
nums2.sort((a, b) => a - b)
var p1 = 0
var p2 = 0
var res = []
while (p1 < nums1.length && p2 < nums2.length) {
var n1 = nums1[p1]
var n2 = nums2[p2]
if (n1 === n2) {
res.push(n1)
p1++
p2++
continue
}
if (n1 > n2) {
p2++
} else {
p1++
}
}
return res
};
var intersect = function (nums1, nums2) {
var res = []
nums1.sort((a, b) => a - b)
nums2.forEach(val => {
var left = 0
var right = nums1.length - 1
while (left <= right) {
var mid = parseInt((left + right) / 2)
if (nums1[mid] === val) {
res.push(val)
nums1.splice(mid, 1)
break
} else if (nums1[mid] > val) {
right = mid - 1
} else if (nums1[mid] < val) {
left = mid + 1
}
}
})
return res
};
console.log(intersect([1, 2, 2, 1], [2, 2]))
console.log(intersect([4, 9, 5], [9, 4, 9, 8, 4]))