由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - find k missing numbers in range [0, N].
相关主题
O(N) sort integer arrayfind index of an element in sorted array
amazon问题求教算法题:两列找共同元素有O(n)的算法吗?
求问下面这几行代码是做什么的,非常感谢!问一个面试题
一个实际的排序问题amazon 电面问题 求解答, 在线等
c++ 问题让人沮丧的Goog电话面试
请教一道题求助:bitmap的问题
Bitmap是怎么回事啊?一道微软题
a电面面经数组里面找数个出现了奇数次的整数,怎么找?
相关话题的讨论汇总
话题: int话题: bitarray话题: sizeof话题: offset话题: index
进入JobHunting版参与讨论
1 (共1页)
w***y
发帖数: 6251
1
这种题怎么做啊? 如果是sorted的, 找一个我知道可以用binary search的法子
如果找更多个, 即使是sorted的, 我也想不出什么法子了.........
s******n
发帖数: 240
2
求和,平方求和,立方求和,...
有k个等式,就可以解出来
http://math2.org/math/expansion/power.htm

【在 w***y 的大作中提到】
: 这种题怎么做啊? 如果是sorted的, 找一个我知道可以用binary search的法子
: 如果找更多个, 即使是sorted的, 我也想不出什么法子了.........

w****o
发帖数: 2260
3
能不能把这个问题给个确切的描述?
我觉得有可能是两种情形:
1. 给个数组,数组大小是N,里面的数都介入 1和N,丢了k个数,没有丢的数可能有重复
,因为数组大小还是N.
2. 给个数组,数组大小是N-k,里面的数都介入 1和N,丢了k个数,没有丢的数没有重复。
到底面试的时候被问到的是哪种情形?应该解答也是不一样的吧?!

【在 w***y 的大作中提到】
: 这种题怎么做啊? 如果是sorted的, 找一个我知道可以用binary search的法子
: 如果找更多个, 即使是sorted的, 我也想不出什么法子了.........

i*********7
发帖数: 348
4
能用额外buffer的话,就建hashtable。其实用Bitmap就够了。。。
w****o
发帖数: 2260
5
能说说我上面提到的是哪种情形?
谢谢!

【在 i*********7 的大作中提到】
: 能用额外buffer的话,就建hashtable。其实用Bitmap就够了。。。
w***y
发帖数: 6251
6
我看到的题目是2, 没有重复

复。

【在 w****o 的大作中提到】
: 能不能把这个问题给个确切的描述?
: 我觉得有可能是两种情形:
: 1. 给个数组,数组大小是N,里面的数都介入 1和N,丢了k个数,没有丢的数可能有重复
: ,因为数组大小还是N.
: 2. 给个数组,数组大小是N-k,里面的数都介入 1和N,丢了k个数,没有丢的数没有重复。
: 到底面试的时候被问到的是哪种情形?应该解答也是不一样的吧?!

w***y
发帖数: 6251
7
能不能给一个讲解bit array的link?
我看了wiki 还是不知道怎么实现 http://en.wikipedia.org/wiki/Bit_array
譬如说现在的这个N-k个数, 怎么转化成一个bit array呢?

【在 i*********7 的大作中提到】
: 能用额外buffer的话,就建hashtable。其实用Bitmap就够了。。。
p*****2
发帖数: 21240
8

就是一个bit代表一个数字,省点内存。

【在 w***y 的大作中提到】
: 能不能给一个讲解bit array的link?
: 我看了wiki 还是不知道怎么实现 http://en.wikipedia.org/wiki/Bit_array
: 譬如说现在的这个N-k个数, 怎么转化成一个bit array呢?

i*********7
发帖数: 348
9
你可以查查STL标准类BITSET
X*K
发帖数: 87
10
根据前面的提示写了一个
void missingK(int a[], int n, int k) {
int * bitmap = new int[n / sizeof(int) + 1];

for (int i = 0; i < n - k; ++i) {
int number = a[i];
int index = number / sizeof(int);
int offset = number - number / sizeof(int) * sizeof(int);
bitmap[index] |= 1 << offset;
}
for (int i = 1; i <= n; ++i) {
int index = i / sizeof(int);
int offset = i - i / sizeof(int) * sizeof(int);
if ((bitmap[index] & 1 << offset) == 0) {
cout << "missing: " << i << endl;
}
}
}
f*******t
发帖数: 7549
11
#include
#include
bool isSet(char *bitarray, int num)
{
int index = num / 8;
int offset = num % 8;
return bitarray[index] & (char)(1 << offset);
}
void set(char *bitarray, int num)
{
int index = num / 8;
int offset = num % 8;
bitarray[index] |= (char)(1 << offset);
}
void printMissingNum(int *array, int arraysize, int N)
{
int bitarraysize = (N + 7) / 8;
char *bitarray = (char*)calloc(bitarraysize, 1);
for(int i = 0; i < arraysize; ++i) {
set(bitarray, array[i]);
}

for(int i = 0; i < N; ++i) {
if(!isSet(bitarray, i)) {
printf("%d ", i);
}
}

free(bitarray);
printf("\n");
}
int main()
{
int array[] = {1, 2, 3, 5, 6};
int N = 10;
printMissingNum(array, sizeof(array) / sizeof(int), N);

return 0;
}
1 (共1页)
进入JobHunting版参与讨论
相关主题
数组里面找数个出现了奇数次的整数,怎么找?c++ 问题
问一道算法题请教一道题
弱弱的问问bitmap?Bitmap是怎么回事啊?
Leetcode 最新题, 搞不懂a电面面经
O(N) sort integer arrayfind index of an element in sorted array
amazon问题求教算法题:两列找共同元素有O(n)的算法吗?
求问下面这几行代码是做什么的,非常感谢!问一个面试题
一个实际的排序问题amazon 电面问题 求解答, 在线等
相关话题的讨论汇总
话题: int话题: bitarray话题: sizeof话题: offset话题: index