看书,讲到了位图。
是用位图的方式给电话号码排序,号码长度是7位,因此需要一个1000万长度的由0组成的字符串。
尝试了以下方法生成初始化的位图字符串,都卡死了。
for(var i="";i.length<10000000;i+=0){}
new Array(10000001).join("0")
请问有比较好的算法能办这件事吗?
看书,讲到了位图。
是用位图的方式给电话号码排序,号码长度是7位,因此需要一个1000万长度的由0组成的字符串。
尝试了以下方法生成初始化的位图字符串,都卡死了。
for(var i="";i.length<10000000;i+=0){}
new Array(10000001).join("0")
请问有比较好的算法能办这件事吗?
export class Bitmap {
private bin: Uint8Array;
constructor(size: number) {
this.bin = new Uint8Array(new ArrayBuffer((size >> 3) + 1));
}
public get(index: number): boolean {
const row = index >> 3;
const bit = 1 << (index % 8);
return (this.bin[row] & bit) > 0;
}
public set(index: number, bool: boolean = true) {
const row = index >> 3;
const bit = 1 << (index % 8);
if (bool) {
this.bin[row] |= bit;
} else {
this.bin[row] &= (255 ^ bit);
}
};
public fill(num: number = 0) {
this.bin.fill(num);
}
public flip(index: number) {
const row = Math.floor(index / 8);
const bit = 1 << (index % 8);
this.bin[row] ^= bit;
}
}
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
https://jsfiddle.net/ghcqhfad/1/
可以运行的。只是浏览器需要一些时间。