题意:
给你三个整数数组 nums1、nums2 和 nums3 ,请你构造并返回一个 不同 数组,
且由 至少 在 两个 数组中出现的所有值组成。数组中的元素可以按 任意 顺序排列。
数据范围:
1 <= nums1.length, nums2.length, nums3.length <= 100
1 <= nums1[i], nums2[j], nums3[k] <= 100
解法:
map记录每个数是否出现,但是开三个map太麻烦了.
可以用一个map,key存数值,value用长度为3的二进制位存三个数组是否出现了该数字.
最后遍历map,将出现>=两次的存入答案即可.
code:
func cal(x int)int{
ans:=0
for x>0{
ans++
x&=(x-1)
}
return ans;
}
func twoOutOfThree(nums1 []int, nums2 []int, nums3 []int) []int {
mp:=make(map[int]int,0)
for _,v:=range nums1{
mp[v]|=1
}
for _,v:=range nums2{
mp[v]|=2
}
for _,v:=range nums3{
mp[v]|=4
}
ans:=[]int{}
for k,v:=range mp{
if cal(v)>=2{
ans=append(ans,k)
}
}
return ans;
}