Friday, November 27, 2015

leetcode面试题21 寻找最近单词对



leetcode面试题21 寻找最近单词对

初阶:有一篇包含N个单词的文章和M个单词对,对于每个单词对,如果他们在文章中都出现了,求出他们在文章中的最近距离。例如文章为:ABBCABC,那么对于单词对(A,C)的最近距离是1(最后的ABC,A必须在C的前面)


进阶:假设N和M都是海量数据,有什么好的方法可以优化?


解答


答:


初阶:扫描文章的单词序列,对于单词对(W1,W2)记录最后一次出现W1的位置P1,当扫描到W2时,计算当前位置和P1的距离,保存下最优的方案。


进阶:使用Map-Reduce对各个单词及其位置建立索引。对于一次请求中的单词对(W1,W2)在索引中获得位置列表,遍历两个列表得到结果。如果两个列表的长度相差不大,则线性扫描,如果相差很大,则使用二分法查找。


面试官角度:


本题的初阶考察点是编程实现。进阶问题考察点主要是"索引" "MapReduce"和在两个数组中招最近元素时,根据数组的长度差距来选择使用线性扫描还是二分查找。


Read full article from leetcode面试题21 寻找最近单词对

Labels

Review (572) System Design (334) System Design - Review (198) Java (189) Coding (75) Interview-System Design (65) Interview (63) Book Notes (59) Coding - Review (59) to-do (45) Linux (43) Knowledge (39) Interview-Java (35) Knowledge - Review (32) Database (31) Design Patterns (31) Big Data (29) Product Architecture (28) MultiThread (27) Soft Skills (27) Concurrency (26) Cracking Code Interview (26) Miscs (25) Distributed (24) OOD Design (24) Google (23) Career (22) Interview - Review (21) Java - Code (21) Operating System (21) Interview Q&A (20) System Design - Practice (20) Tips (19) Algorithm (17) Company - Facebook (17) Security (17) How to Ace Interview (16) Brain Teaser (14) Linux - Shell (14) Redis (14) Testing (14) Tools (14) Code Quality (13) Search (13) Spark (13) Spring (13) Company - LinkedIn (12) How to (12) Interview-Database (12) Interview-Operating System (12) Solr (12) Architecture Principles (11) Resource (10) Amazon (9) Cache (9) Git (9) Interview - MultiThread (9) Scalability (9) Trouble Shooting (9) Web Dev (9) Architecture Model (8) Better Programmer (8) Cassandra (8) Company - Uber (8) Java67 (8) Math (8) OO Design principles (8) SOLID (8) Design (7) Interview Corner (7) JVM (7) Java Basics (7) Kafka (7) Mac (7) Machine Learning (7) NoSQL (7) C++ (6) Chrome (6) File System (6) Highscalability (6) How to Better (6) Network (6) Restful (6) CareerCup (5) Code Review (5) Hash (5) How to Interview (5) JDK Source Code (5) JavaScript (5) Leetcode (5) Must Known (5) Python (5)

Popular Posts