면접 문제 56 - I. 배열 에서 숫자 가 나 오 는 횟수

3018 단어 알고리즘
면접 문제 56 - I. 배열 에서 숫자 가 나 오 는 횟수
두 개의 같은 숫자 가 0 을 얻 거나, 한 수 와 0 을 얻 거나, 자신 을 얻는다.따라서 이 한 줄 의 숫자 가 다 르 거나 내 려 오 면 두 개의 숫자 x, y 의 이 또는 z 를 얻 을 수 있다.그러면 z 에서 1 인 한 명 은 x 를 의미 하고 y 는 이 한 명 에서 0 이 고 한 명 은 1 이다.z 에서 1 인 한 자 리 를 다른 숫자 비트 와 함께 취 할 수 있 으 며, 배열 을 0 인 한 그룹 과 이 한 자 리 를 1 인 다른 그룹 으로 나 눌 수 있다.그리고 두 조 에 대해 각각 다른 것 을 취하 거나 x, y 를 꺼 냈 다.
func singleNumbers(nums []int) []int {
	ans:=0
	for _,v:=range nums{
		ans^=v
	}
	tmp:=1
	for ans%2==0{
		ans>>=1
		tmp<<=1
	}
	ans1,ans2:=0,0
	for _,v:=range nums{
		if v&tmp==0{
			ans1^=v
		}else{
			ans2^=v
		}
	}
	return []int{ans1,ans2}
}

좋은 웹페이지 즐겨찾기