常见面试题之通用范式

目录

  • 递归模板:
  • 分治策略模板
  • DFS模板:
  • BFS模板

面试题中有很多套路,总结熟记以下模板可以见招拆招!

递归模板:

参考盗梦空间

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)

你可能感兴趣的:(面试题)