빅 데이터 처리 에서 흔히 볼 수 있 는 문제:통계 3 억 개의 정수 에서 나타 나 지 않 은 정수 와 중복 되 지 않 은 정수
1445 단어 알고리즘
비트 맵 은 하나의 비트 배열 을 사용 하 는 것 으로 모든 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트 비트다음은 예제 코드 입 니 다.
Set 먼저 그 배열 의 위 치 를 찾 은 다음 에 그 위치 나 이전 위치 로 갑 니 다.
lass BitMap
{
public:
BitMap(size_t num)
{
_v.resize((num >> 5) + 1); // num/32 + 1
}
void Set(size_t num) //set 1
{
size_t index = num >> 5; // num/32
size_t pos = num % 32;
_v[index] |= (1 << pos);
}
void ReSet(size_t num) //set 0
{
size_t index = num >> 5; // num/32
size_t pos = num % 32;
_v[index] &= ~(1 << pos);
}
bool HasExisted(size_t num)//check whether it exists
{
size_t index = num >> 5;
size_t pos = num % 32;
bool flag = false;
if (_v[index] & (1 << pos))
flag = true;
return flag;
}
private:
vector _v;
};
그렇다면 중복 되 지 않 은 수 를 어떻게 찾 을 수 있 을 까?간단 합 니 다.비트 맵 두 개 를 사용 하거나 비트 두 개 로 한 수가 00 이 나 오지 않 았 다 는 것 을 표시 합 니 다.한 번 01 이 나 오고 두 번 10 이 나 오고 세 번 이상 11 이 나 옵 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Codility Lesson3】FrogJmpA small frog wants to get to the other side of the road. The frog is currently located at position X and wants to get to...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.