
基本算法思想
文章平均质量分 93
提高内功
Strive_LiJiaLe
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
数据结构的框架思维(如何学好数据结构)
文章目录前言一、数据结构千变万化,但不离其宗二、数据结构的操作,无非:遍历+访问三、为什么算法总是和数据结构同时出现总结前言本文是对整个数据结构及算法的总体框架认识,旨在帮助读者自顶向下,从整体到细节,从抽象到具体地看待数据结构。希望通过本文读者能在对数据结构的学习和理解上能有更高层的认识。先声明一下:首先,这里讲的都是普通的数据结构,咱不是搞算法竞赛的,自学野路子出生,很多厉害的知识我不会,我只会解决常规的问题。另外,以下是我个人的经验的总结,没有哪本书会写这些东西,所以请读者试着理解我的角度,如转载 2021-04-24 14:40:59 · 511 阅读 · 0 评论 -
树型递归思想
文章目录前言二叉树递归思想1.判断平衡二叉树为例。需要子树的信息:代码2.寻找最大的搜索子树为例。需要子树的信息:代码3.派对的最大快乐需要的信息代码4.判断是否为满二叉树思想进阶(多情况)5.判断是否为完全二叉树非递归,宽度优先遍历解决递归思想解决6.两个节点的最低公共祖先非递归,利用哈希表递归思想解决前言本文章将从很多涉及二叉树来解的算法题中,高度抽象出来一套底层思想,掌握了六步法,可以解决更多算法题。二叉树递归思想1)假设以X节点为头,假设可以向X左数和右数要任何信息2)在上一步的假设下,原创 2021-05-02 18:06:15 · 598 阅读 · 0 评论 -
递归、分治、动态规划、贪心、回溯——区别和联系
文章目录前言一、分治算法和动态规划和递归二、贪心算法和动态规划三、回溯算法和递归前言当我们学习了这些算法时,可能会疑惑:为什么有些问题可以用分治算法解决,也可以用回溯算法解决?——全排列问题。为什么有些问题可以用贪心算法解决,也可以用递归暴力解决,还可以用动态规划解决?——凑零钱问题。为什么有些问题可以用递归解决,也可以用动态规划解决?——爬台阶问题。其实,有些是切入的角度不同,有些只是效率不同。递归是一种编程技巧,一种解决问题的思维方式;分治算法和动态规划很大程度上是递归思想基础上的(虽原创 2021-04-24 18:37:02 · 4781 阅读 · 0 评论 -
动态规划的前世(背景)——递归
文章目录先介绍一些分治:例题如何从递归(自顶向下)到动态规划(自底向上),并解决子问题重叠。1.以斐波那契问题为例递归算法:解决子问题重叠,向动态规划靠近动态规划总结2.以爬楼梯为例递归代码动态规划总结总结先介绍一些分治:分治策略:将原问题分解为若干个规模较小但类似于原问题的子问题,递归的求解这些子问题,然后再合并这些子问题的解来建立原问题的解。因为在求解大问题时,需要递归的求小问题,因此一般用递归的方法实现,即自顶向下(下面解释)。动态规划:动态规划其实和分治策略是类似的,也是将一个原创 2021-04-24 18:15:24 · 883 阅读 · 0 评论 -
动态规划
输入:[ [0,0,0], [0,1,0], [0,0,0]]输出: 2解释:3x3 网格的正中间有一个障碍物。从左上角到右下角一共有 2 条不同的路径:1. 向右 -> 向右 -> 向下 -> 向下2. 向下 -> 向下 -> 向右 -> 向右原创 2021-04-22 15:41:01 · 251 阅读 · 0 评论 -
动态规划(进阶)
一、理论解析上一次 解释了动态规划的一些基本特性和解题思路,也说了动态规划其实就是记住之前问题的答案,然后利用之前问题的答案来分析并解决当前问题,这里面有两个非常重要的步骤,就是 拆解问题和 定义状态。这次来针对具体的一类动态规划问题,矩阵类动态规划问题,来看看针对这一类问题的思路和注意点。矩阵类动态规划,也可以叫做坐标类动态规划,一般这类问题都会给你一个矩阵,矩阵里面有着一些信息,然后你需要根据这些信息求解问题。其实 矩阵可以看作是图的一种,怎么说?你可以把整个矩阵当成一个图,矩阵里面的每个位置上原创 2021-04-22 15:46:59 · 358 阅读 · 0 评论 -
动态规划(最高阶)
文章目录前言一、题目分析1.最长上升子序列题目描述:题目解析参考代码2.打家劫舍题目描述题目解析代码实现3.打家劫舍plus题目描述题目解析代码实现总结前言上一篇文章 我们分析了矩阵类动态规划,说到这类动态规划通常在一个矩阵中进行,我们只需要考虑当前位置的信息即可,分析并定义状态的时候,也只需要分析当前位置和其相邻位置的关系,通常这样做就可以达到拆解问题的目的。这次再来看一类动态规划问题,序列类动态规划问题,这类动态规划问题较为普遍,分析难度相比之前也略有提升,通常问题的输入参数会涉及数组或是字符.转载 2021-04-22 17:33:01 · 550 阅读 · 0 评论 -
回溯算法
文章目录一、认识回溯算法二、全排列问题三、N皇后问题总结参考:一、认识回溯算法解决一个回溯问题,实际上就是一个决策树的遍历过程。你只需要思考 3 个问题:路径:也就是已经做出的选择。选择列表:也就是你当前可以做的选择。结束条件:也就是到达决策树底层,无法再做选择的条件。如果你不理解这三个词语的解释,没关系,我们后面会用「全排列」和「N 皇后问题」这两个经典的回溯算法问题来帮你理解这些词语是什么意思,现在你先留着印象。代码方面,回溯算法的框架:result = []def backt转载 2021-04-24 12:13:02 · 140 阅读 · 0 评论 -
分治算法
文章目录1、概念2.算法策略3.使用场景4.基本步骤5.伪代码典型应用总结1、概念分治算法,根据字面意思解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。2.算法策略分治策略:对于一个规模为 n 的问题,若该问题可以容易地解决(比如说规模 n 较小)则直接解决,否则将其分解为 k 个规模较小的子问题,这些子问题互相独立且与原问题形式相同,递归地解这些子问题,然后将各子问题的解合并原创 2021-04-22 17:54:16 · 450 阅读 · 0 评论 -
贪心算法
系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章 Python 机器学习入门之pandas的使用文章目录系列文章目录前言一、概念二、算法流程三、伪代码四、示例题目描述题目分析代码实现总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、概念贪心的意思在于在作出选择时,每次都要选择对原创 2021-04-22 13:51:53 · 386 阅读 · 0 评论