核心思想
使用二进制位格式字符串表示集合
例子
集合{1,2,3,5,8,13}《——》二进制位格式字符串01110100100001
Jon Bentley. 编程珠玑(第2版修订版) (Chinese Edition) (Kindle 位置 288-290). Kindle 版本.
说明
对于数组的每一个元素只存在两个值
1.0 //0
2.1 //值value。这个值具体是多少呢?在第几位就是整数几。明白了吗。就这么简单。换句话说,字符串的长度,决定了整数最大值;最小值是0。
这就是所有的核心思想,讲解完毕!
怎么计算值?
数组的索引就是整数的值!
举个例子
1.a[i=5]=0 //value的值可以是i=5或者0,如果数组元素的值是0,那么表示当前位没有值。
2.a[j=10]=1 //value的值是j=10。此时数组元素的值是1,索引是j=10=value。
问题-最大数据不知道是多大?
不管知道不知道,反正你要把 数字集合——二进制位字符串 这么转换一下,转换的时候,不管最大值是多少,都按最大值来转换为最长字符串即可。这个其实不要紧,面试官在这个问题上也没有问到点子上。估计他自己也有点懵。