对于初学者,我确实看过这些问题:
给定一个整数数组,其中一些数字重复1次,一些数字重复2次,只有一个数字重复3次,你怎么找到重复3次的数字
这一个不同:
给出一个带有一个唯一编号的未排序整数数组,其余数字重复3次,即:
{4,5,3, 5,3,4, 1, 4,3,5 }
Run Code Online (Sandbox Code Playgroud)
我们需要在O(n)时间和O(1)空间中找到这个唯一的数字
注意:这不是一个功课,只是我遇到一个很好的问题
小智 9
这个如何:
想法:按位添加mod 3
#include <stdio.h>
int main() {
int a[] = { 1, 9, 9, 556, 556, 9, 556, 87878, 87878, 87878 };
int n = sizeof(a) / sizeof(int);
int low = 0, up = 0;
for(int i = 0; i < n; i++) {
int x = ~(up & a[i]);
up &= x;
x &= a[i];
up |= (x & low);
low ^= x;
}
printf("single no: %d\n", low);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
888 次 |
| 最近记录: |