随笔分类 - 算法学习
摘要:动态规划 概念 维基: 动态规划(英语:Dynamic programming,简称DP)是一种在数学、管理科学、计算机科学、经济学和生物信息学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。 动态规划常常适用于有重叠子问题[1]和最优子结构性质的问题,动态规划方法所耗时间往往
阅读全文
摘要:贪心算法 概念 维基: 贪心算法(英语:greedy algorithm),又称贪婪算法,是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是最好或最优的算法。 步骤 1.建立数学模型来描述问题; 2.把求解的问题分成若干个子问题; 3.对每一子问题求解,得到子问题
阅读全文
摘要:BFS与DFS 概念 维基: 广度优先搜索算法(英语:Breadth-First Search,缩写为BFS),又译作宽度优先搜索,或横向优先搜索,是一种图形搜索算法。简单的说,BFS是从根节点开始,沿着树的宽度遍历树的节点。如果所有节点均被访问,则算法中止。 深度优先搜索算法(英语:Depth-F
阅读全文
摘要:二叉树遍历 二叉树定义 二叉树定义代码 class TreeNode { public int val; public TreeNode left; public TreeNode right; public TreeNode(int x) { val = x; } } 普通前中后序遍历 前序遍历代
阅读全文
摘要:回溯算法 基本思路 解决一个回溯问题,实际上就是一个决策树的遍历过程。只需要思考 3 个问题: 1、路径:也就是已经做出的选择。 2、选择列表:也就是你当前可以做的选择。 3、结束条件:也就是到达决策树底层,无法再做选择的条件。 伪代码实现回溯算法框架: Backtrack(选择列表,路径): if
阅读全文

浙公网安备 33010602011771号