记一次面试经历 – DeReK – Medium



记一次面试经历 – DeReK – Medium

问题就是清除掉多余的括号。字符串里可能会有除括号外的其他字符。返回一个possible就可以不是返回所有的。

我的思路是一个stack辅助,保存left,遇到right如果stack为空则去掉这个right,如果不为空就pop。最后stack里面的剩下的就是invalid的left需要去掉。这么做有一些catch,第一就是你不能在push left的过程中直接remove right,否则stack存的index都乱了,因为我们动态修改了字符串长度。所以遇到非法right要先标记特殊字符然后最后再删掉。 最后删掉的时候也要注意其实还是在动态修改长度,index要记得再i 减减才可以继续循环(这个我忽略了)。

然后被问了一个不用stack的解法。没能自己想出来,给了提示。说,其实我们不用去记住left的每一个index。最左边的括号可以考虑是可以match anything的。这是他原话,没有让我明白其实。后来再经过例子的提示,明白了解法。 左边的有几个就需要有几个右边的来match,如果没有match的就是invalid的。那么我们仅需要统计左边和右边括号的数量,然后如果左边的多那就从后往前遍历数组,删掉前n个,n为左右数量差值。如果需要删掉右边的,那就从前往后遍历。

这个方法真心不错,之前练习的时候从来没想过这个思路,还是蛮开心的能学到东西。希望下一次学东西不是在面试现场啊。。这次能不能通过就看缘分吧,希望能继续下去!


Read full article from 记一次面试经历 – DeReK – Medium


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