[CareerCup] 10.3 Integer not Contain in the File 文件中不包含的数 - Grandyang - 博客园



[CareerCup] 10.3 Integer not Contain in the File 文件中不包含的数 - Grandyang - 博客园

[CareerCup] 10.3 Integer not Contain in the File 文件中不包含的数

 

10.3 Given an input file with four billion non-negative integers, provide an algorithm to generate an integer which is not contained in the file. Assume you have 1 GB of memory available for this task.
FOLLOW UP
What if you have only 10 MB of memory? Assume that all the values are distinct and we now have no more than one billion non-negative integers.

 

这道题给我们了一个很大很大的数据文件,里面都是有四十亿个非负整数,现在给了我们1GB的内存大小,让我们找到一个不包括在这个文件中的非负整数,我们需要用位向量Bit Vector来做,跟之前那道5.8 Draw Horizonatal Line 画横线有些类似,题目中说数据文件总共有四十亿个数字,也就是232个,那么非负数就有231个,给了我们1GB内存,也就是八十亿位,我们可以把每个整数都映射到内存中的不同位,逻辑如下:

1. 建立一个四十亿位大小的位向量Bit Vector,位向量是一个使用整型数组来存储bool型(或其他数据类型)值的数组,每个整型或bool型占32位。

2. 初始化位向量为0.

3. 遍历所有数字,给每个数字对应的位设为1.

4. 遍历位向量,找到第一个为0的位,算出其对应的整数。


Read full article from [CareerCup] 10.3 Integer not Contain in the File 文件中不包含的数 - Grandyang - 博客园


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts