查看: 3031| 回复: 3
跳转到指定楼层
上一主题 下一主题
收起左侧

[CareerCup] bit vector 会比boolean array 节约很多内存么?

全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
bit vector 会比boolean array 节约很多内存么?

我在看cracking the coding interview 第一题时想到的问题。
题目时这样的:Implement an algorithm to determine if a string has all unique characters. What if you can not use additional data structures?
他在solution中提到
We can reduce our space usage a little bit by using a bit vector. We will assume, in the below code, that the string is only lower case ‘a’ through ‘z’. This will allow us to use just a single int
public static boolean isUniqueChars(String str) {
        int checker = 0;
                for (int i = 0; i < str.length(); ++i) {
                        int val = str.charAt(i) - ‘a’;
                        if ((checker & (1 << val)) > 0) return false;
                        checker |= (1 << val);
                }
return true;
}
但是我在想,一个int在java里占32bit。 一个boolean array如果只需要表示26个小写字母的话要占用多少位内存?我不太清楚具体的实现,但是按理说一个boolean是一个bit,好像只要26bit啊,比用int还要少?boolean array可能有些overhead, 但是这些底层的实现都要考虑进去么?

其实我更在意实际问题,如果在面试中,在用到boolean array 的地方用bit vector 会不会加分?

上一篇:MergeSort 講解 ( Recursive and Iterative)
下一篇:讨论下leetcode 3sum
🔗
JAGUAR 2013-1-6 12:36:39 | 只看该作者
全局:
c++里bool占1byte,Java里没有明确规定boolean的大小,要看JVM,但肯定不止1bit,具体参考http://blog.csdn.net/lovexp2010/article/details/7839377
回复

使用道具 举报

🔗
brilight 2013-1-8 14:48:01 | 只看该作者
全局:
本帖最后由 brilight 于 2013-1-8 14:51 编辑

java 是虛擬機語言,C++直接編譯成機器語言,所以導致 java 和 C++的程序的佔用內存 和 佔用CPU都不是一個數量級的。


回复

使用道具 举报

🔗
dacongy 2013-1-11 12:21:21 | 只看该作者
全局:
boolean array是一个object,有object header的开销,光是存储array length就要一个int长度了; boolean大小如楼上所说。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表