回溯详解以及与 DFS 算法的关联

回溯详解以及与 DFS 算法的关联

概述回溯法是一种选优搜索法(试探法),被称为通用的解题方法,这种方法适用于解一些组合数相当大的问题。通过剪枝(约束+限界)可以大幅减少解决问题的计算量(搜索量)。深度优先搜索(Depth-First-Search,DFS)是一种...
Python 实现二叉搜索树(BST)

Python 实现二叉搜索树(BST)

前言二叉搜索树(Binary Search Tree)是一种特殊的二叉树,支持多种动态集合操作,如 Search、Insert、Delete、Minimum 和 Maximum 等。二叉查找树要么是一棵空树,要么是一棵具有如下性质的非空二叉树:若左子树非空,则...
Python 与二叉堆

Python 与二叉堆

什么是二叉堆二叉堆(binary heap)是一种特殊的堆,二叉堆是完全二叉树或者是近似完全二叉树。二叉堆满足堆特性:父节点的键值总是保持固定的序关系于任何一个子节点的键值,且每个节点的左子树和右子树都是一个二叉堆。当...
Python 判断两个单链表的交点

Python 判断两个单链表的交点

前言在前面两章有介绍过单链表的基本操作以及有环链表的相关问题。本章主要分析两个单链表的交点问题。首先声明,两个单链表只能存在 Y 型交叉,不会存在 X 型交叉。因为如果是 X 型交叉,节点在交叉点之后便不知道 next 指...
Python 判断链表中是否有环,且找出环的入口节点

Python 判断链表中是否有环,且找出环的入口节点

概述单向链表链表中最简单的一种是单向链表,它包含两个域,一个信息域和一个指针域。这个链接指向列表中的下一个节点,而最后一个节点则指向一个空值。一个单向链表包含两个值: 当前节点的值和一个指向下一个节点的链接一...
Python 实现单链表

Python 实现单链表

前言数据结构中的线性表:分为顺序表和链表。线性表线性表(Linear List)是由 n(n≥0)个数据元素(结点)a[0],a[1],a[2]…,a[n-1]组成的有限序列。其中:数据元素的个数 n 定义为表的长度 = "list".length() ("list".l...
Python 实现拓扑排序

Python 实现拓扑排序

什么是拓扑排序在计算机科学领域,有向图的拓扑排序是其顶点的线性排序,使得对于从顶点 u 到顶点 v 的每个有向边 uv,u 在排序中都在 v 之前。例如,图形的顶点可以表示要执行的任务,并且边可以表示一个任务必须在另一个...
Python 求解最小公倍数

Python 求解最小公倍数

问题描述:给定两个正整数,求它们的最小公倍数。提高要求:三个以上数的求解。一、两个数的情况下求解最小公倍数1.穷举法lcm = min(m,n)max_num = max(m,n)for i in range(2,max_num+1): if lcm*i % m ==0 and lcm*i % n...
分割线、平面、空间问题

分割线、平面、空间问题

关于分割问题,存在多种情况,在此进行汇总,对问题进行分析,对所用到的公式进行推导。1.直线分割题目:n 个点最多可以把一条直线划分成多少段公式:A(n) = n+12.平面分割题目:n 条直线,最多可以把平面分为多少个区域。...
Python 求解最长回文子串

Python 求解最长回文子串

前言题目来源:记得一副有趣的对联: "雾锁山头山锁雾, 天连水尾水连天", 上联和下联都是回文的.当然类似的还有: "上海自来水水来自海上, 山西悬空寺寺空悬西山".回文是什么意思? 就是把内容反过来读也是和原来一样的, 譬如 ...