hao同学的技术博客

  • 首页
  • Java
    • Java
    • JVM教程
    • Java面试
    • Java并发入门
    • Java并发进阶
  • 项目
    • 从零打造项目
  • Python
    • Python
    • Python爬虫
    • 算法
  • Java框架
    • Spring
    • SpringBoot
  • 前端
    • Angular
  • 其他
    • Linux
    • SQL
  • 随笔
算法
算法

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

概述 回溯法是一种选优搜索法(试探法),被称为通用的解题方法,这种方法适用于解一些组合数相当大的问题。通过剪枝(约束+限界)可以大幅减少解决问题的计算量(搜索量)。 深度优先搜索(Depth-First-Search,DFS)是一种用于遍历或搜索树或图的算法。沿着树的深度遍历树的节点,尽可能深的搜索树的分支。当节点v的所在边都己被探寻过,搜索将回溯到发现节点v的那条边的起始节点。这一过程一直进行到已发现从源节点可达的所有节点为止。如果还存在未被发现的节点,则选择其中一个作为源节点并重复以上过程,整个进程反复进行直到…

2022年5月23日 0条评论 371点热度 1人点赞 hresh 阅读全文
算法

Python 实现二叉搜索树(BST)

前言 二叉搜索树(Binary Search Tree)是一种特殊的二叉树,支持多种动态集合操作,如 Search、Insert、Delete、Minimum 和 Maximum 等。 二叉查找树要么是一棵空树,要么是一棵具有如下性质的非空二叉树: 若左子树非空,则左子树上的所有节点的关键字值均小于根节点的关键字值。 若右子树非空,则右子树上的所有节点的关键字值均大于根节点的关键字值。 左、右子树本身也分别是一棵二叉查找树(二叉排序树)。 可以看出,二叉搜索树中各个节点都不相同,且对二叉查找树进行中序遍历,可以得到…

2022年5月23日 0条评论 213点热度 0人点赞 hresh 阅读全文
算法

Python 与二叉堆

什么是二叉堆 二叉堆(binary heap)是一种特殊的堆,二叉堆是完全二叉树或者是近似完全二叉树。二叉堆满足堆特性:父节点的键值总是保持固定的序关系于任何一个子节点的键值,且每个节点的左子树和右子树都是一个二叉堆。 当父节点的键值总是大于或等于任何一个子节点的键值时为“最大堆”。当父节点的键值总是小于或等于任何一个子节点的键值时为“最小堆”。 构建二叉堆 二叉堆一般用数组来表示。如果根节点在数组中的位置是 1,第 n 个位置的子节点分别在 2n 和 2n+1。因此,第 1 个位置的子节点在 2 和 3,第 2 …

2022年5月23日 0条评论 307点热度 0人点赞 hresh 阅读全文
算法

Python 判断两个单链表的交点

前言 在前面两章有介绍过单链表的基本操作以及有环链表的相关问题。本章主要分析两个单链表的交点问题。 首先声明,两个单链表只能存在 Y 型交叉,不会存在 X 型交叉。因为如果是 X 型交叉,节点在交叉点之后便不知道 next 指针指向为哪一个节点。 实战分析 判断单链表是否相交存在三种情况: 两个单链表都没有环。 两个单链表中 一个有环,一个没有环。 两个链表都有环。 情况 1 对于仅判断相交不相交的话:判断最后一个节点是否相同的办法并不慢,如果两个链表长度m,n 那么复杂度O(m+n),这是最优的复杂度。 def …

2022年5月23日 0条评论 217点热度 0人点赞 hresh 阅读全文
算法

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

概述 单向链表 链表中最简单的一种是单向链表,它包含两个域,一个信息域和一个指针域。这个链接指向列表中的下一个节点,而最后一个节点则指向一个空值。 一个单向链表包含两个值: 当前节点的值和一个指向下一个节点的链接 一个单向链表的节点被分成两个部分。第一个部分保存或者显示关于节点的信息,第二个部分存储下一个节点的地址。单向链表只可向一个方向遍历。 循环链表 在一个 循环链表中, 首节点和末节点被连接在一起。这种方式在单向和双向链表中皆可实现。要转换一个循环链表,你开始于任意一个节点然后沿着列表的任一方向直到返回开始的…

2022年5月23日 0条评论 355点热度 0人点赞 hresh 阅读全文
算法

Python 实现单链表

前言 数据结构中的线性表:分为顺序表和链表。 线性表 线性表(Linear List)是由 n(n≥0)个数据元素(结点)a[0],a[1],a[2]…,a[n-1]组成的有限序列。 其中: 数据元素的个数 n 定义为表的长度 = "list".length() ("list".length() = 0(表里没有一个元素)时称为空表) 将非空的线性表(n>=1)记作:(a[0],a[1],a[2],…,a[n-1]) 数据元素 a[i](0≤i≤n-1)只是个抽象符号,其具体含义在不同情况下可以不同 一个数据元素可…

2022年5月23日 0条评论 377点热度 0人点赞 hresh 阅读全文
算法

Python 实现拓扑排序

什么是拓扑排序 在计算机科学领域,有向图的拓扑排序是其顶点的线性排序,使得对于从顶点 u 到顶点 v 的每个有向边 uv,u 在排序中都在 v 之前。 例如,图形的顶点可以表示要执行的任务,并且边可以表示一个任务必须在另一个任务之前执行的约束;在这个应用中,拓扑排序只是一个有效的任务顺序。 如果且仅当图形没有定向循环,即如果它是有向无环图(DAG),则拓扑排序是可能的。 任何 DAG 具有至少一个拓扑排序,并且已知这些算法用于在线性时间内构建任何 DAG 的拓扑排序。 在图论中,由一个有向无环图的顶点组成的序列,当…

2022年5月22日 0条评论 339点热度 0人点赞 hresh 阅读全文
算法

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 ==0: lcm *= i break print(lcm) 2.公式 lcm = a*b//gcd(a, b) def lcm(a,b): gcd = lambda a, b: a if b == 0 …

2022年5月22日 0条评论 318点热度 0人点赞 hresh 阅读全文
算法

分割线、平面、空间问题

关于分割问题,存在多种情况,在此进行汇总,对问题进行分析,对所用到的公式进行推导。 1.直线分割 题目:n 个点最多可以把一条直线划分成多少段 公式:A(n) = n+1 2.平面分割 题目:n 条直线,最多可以把平面分为多少个区域。 公式:B(n) = n(n+1)/2+1 分析: 假设平面上已有 n 条直线它们把平面划分成最多的区域,那么第 n+1 条直线下去的时候,为了保证获得最多的区域,那么要求这条直线和之前的 n 条直线都相交,并且新产生的交点不和之前的交点重合.显然第 n+1 条直线和之前的 n 条直线…

2022年5月22日 0条评论 347点热度 0人点赞 hresh 阅读全文
算法

Python 求解最长回文子串

前言 题目来源: 记得一副有趣的对联: "雾锁山头山锁雾, 天连水尾水连天", 上联和下联都是回文的. 当然类似的还有: "上海自来水水来自海上, 山西悬空寺寺空悬西山". 回文是什么意思? 就是把内容反过来读也是和原来一样的, 譬如 abccba, xyzyx, 这些都是回文的. 然而我们更感兴趣的是在一个英文字符串 L 中, 怎么找出最长的回文子串. 例如 L = "caayyhheehhbbbhhjhhyyaac", 那么它最长的回文子串是 "hhbbbhh". 这个任务看似简单, 但是如果我告诉你 L 的长…

2022年5月22日 0条评论 189点热度 0人点赞 hresh 阅读全文
12

hresh

这是一个专注于IT技术学习交流的个人技术博客网站,包括Java学习、Python爬虫、Web开发实践等领域,深耕Java领域,内容涵盖Java基础、Java并发编程、Java虚拟机、Java面试等核心知识点。

最新 热点 随机
最新 热点 随机
后端必知:遵循Google Java规范并引入checkstyle检查 Spring Security结合Redis实现缓存功能 Spring Security结合JWT实现认证与授权 Spring Security自定义认证逻辑实现图片验证码登录 Spring Security进阶学习 Spring Security入门学习
初识Javac编译器和Java语法糖 Java面试准备之JVM系列三 利用scrapy 爬取煎蛋网图片 python3.7 安装使用 tesserocr Java并发编程入门学习之主流锁 深入学习方法内联
分类
  • Angular / 11篇
  • Java / 6篇
  • Java并发入门 / 7篇
  • Java并发进阶 / 7篇
  • Java面试 / 24篇
  • JVM教程 / 25篇
  • Linux / 3篇
  • Python / 13篇
  • Python爬虫 / 17篇
  • Spring / 27篇
  • SpringBoot / 8篇
  • SQL / 6篇
  • 从零打造项目 / 19篇
  • 算法 / 18篇
  • 随笔 / 16篇
最近评论
1 发布于 4 个月前(09月29日) :lol: :twisted: 发发
roydon 发布于 4 个月前(09月27日) 加个友链吗大佬。 我的site:https://roydon.xyz
Javmag 发布于 4 个月前(09月21日) :rolleyes: Theme Kratos Made By Seaton Jiang.
小wu 发布于 5 个月前(09月06日) 宝藏up关注了 :arrow:
罗简单 发布于 7 个月前(07月17日) 您好,我们有一个网站需要爬取数据,参数也加密了,需要您的帮助,付费,请问如何联系到您? 我的vx是...
友链
  • roydon roydon
  • 雨临Lewis的博客 雨临Lewis的博客

COPYRIGHT © 2022 hao同学的技术博客. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

鄂ICP备2022007381号

鄂公网安备 42010302002449号