【LeetCodeゼロブラシから】Single Number II
タイトル:
Given an array of integers, every element appears three times except for one. Find that single one.
回答:
偶数以外の数の要素を選択する場合は、各要素が順次排他的に加算される方法を使用します.しかし奇数でない回数(3,5,7,9......)の要素?
急げばいいのにmapストレージ.そしてhash_を巡るmapはSingle Numberを見つけた.
考え方を変えて、ビット別に異なるSingle Numberに対応するビットを探します.詳細: bit = 1 << i; そして、現在数とbitビットとを用いて、結果に基づいて、現在数のi番目のビットが1であるか否かを判断する. 最終結果i番目の位置を1とし、ビットまたは操作可能:ans|bit.
Given an array of integers, every element appears three times except for one. Find that single one.
回答:
偶数以外の数の要素を選択する場合は、各要素が順次排他的に加算される方法を使用します.しかし奇数でない回数(3,5,7,9......)の要素?
急げばいいのにmapストレージ.そしてhash_を巡るmapはSingle Numberを見つけた.
考え方を変えて、ビット別に異なるSingle Numberに対応するビットを探します.詳細:
class Solution {
public:
int singleNumber(int A[], int n) {
int bit, bitsum;
int ans;
for(int i = 0; i < 32; i++)
{
bit = 1 << i;
bitsum = 0;
for(int j = 0; j < n; j++)
{
if(bit & A[j]) bitsum++;
}
if(bitsum % 3) ans = ans | bit;
}
return ans;
}
};