常见面试题之通用范式
程序员文章站
2022-03-03 22:38:44
...
面试题中有很多套路,总结熟记以下模板可以见招拆招!
递归模板:
参考盗梦空间
Def recursion(level, param1, param2, …):
# recursion terminator
If(level > MAX_LEVEL)
Print_result
Return
# process logic in current level
Process_data(leve +1 ,p1, …)
# drill down
Self.recursion(level +1 ,p1, …)
# reverse the current level status if needed
Reverse_state(level)
分治策略模板
Def divide_conquer(problem, param1,param2,….)
# recursion terminator
If problem is None:
Print_reslut
# prepare data
Data = prepare_data(problem)
Subproblems = split_problem(problem,data)
# conquer subproblems
Subresult1 = self.divide_conquer(subproblems[0], p1,….)
Subresult2 = self.divide_conquer(subproblems[1], p1,….)
Subresult3 = self.divide_conquer(subproblems[2], p1,….)
# process and generate the final result
Result = process_result(subresult1,subresult2,subresult3,…..)
DFS模板:
Visited = set()
Def dfs(node,visited):
Visited.add(node)
# process current node here
…
For next_node in node.children()
If not next_node in visited:
Dfs(next_node, visited);
BFS模板
Def BFS(graph,start,end):
Queue = [];
Queue.append([start])
Visited.add(start)
While(queue):
Node = queue.pop()
Visited.add(node)
Process(node)
Nodes = generate_related_nodes(node)
Queue.push(nodes)
上一篇: 2016上海某公司面试题_0
下一篇: 面试题1