Pocket Gems面经 - 我的博客 - ITeye技术网站



Pocket Gems面经 - 我的博客 - ITeye技术网站

FOLLOW UP: Top k frequent elements in a stream Kth most frequent number Input : An array of n numbers, and a number k Output : An array of n numbers where example: [1, 3, 5, 7, 3, 4, 2, 9],  k = 3 [5, 7, 7, 7, 4, 9, 9, 9]     时间复杂度。     2. parse一个字符串表示的三元表达式,输出一个树结构。三元表达式中不含括号,每个变量名都是一个字母,并且保证合法。例如: a?b:c a?b?c:d:e a?b:c?d:e      a / \ 于是这才开始真正用心思考这个题目本身。很快想到得用递归了,然后有两个要点: 于是呼隆呼隆写完,然后interviewer要分析最坏时间复杂度。首先列出最坏情况: a ? (...) : b 再列出最坏情况的递归表达式 T(n) = 2 * T(n - 4),因为中间括号部分长度是n - 4,而且匹配":"时遍历了一遍,然后递归又遍历了一遍。这时 T(n) = O(2^n)。 然后问能不能优化,这才发现中间部分遍历了两次,所以应该一开始遍历就用hash table存下所有的 ? : 匹配关系,然后再遍历一遍,常数时间就能找到每个子树的起止点了。这样总复杂度是O(n)。这里就没让写代码,因为来不及了,只这样说了下思路。     Sliding Window (给你一个数组和一个数k,k是滑动窗口的大小,滑动窗口每次向右移动一个index,输出是一个新的数组,记录每次窗口里的最小值)   example:      1   1. asian guy, 直接read code, 是String变成一个Tree, input: "   1     /   \    2       3"   1   2. asian girl, word break I, and find top k frequency number.  3. american guy,

Read full article from Pocket Gems面经 - 我的博客 - ITeye技术网站


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