Zicon Blog

知识不负我,我亦不负ACG

设计模式——代理模式分析

通过代理间接访问

“写作代理读作中介~” 前言 本篇介绍的代理模式是最后一个结构型设计模式了。下一次将给大家介绍行为型模式。 代理模式是常用的结构型设计模式之一,可以保证客户端使用的透明性。当客户不想或不能直接引用一个对象时,可以通过代理实现间接引用,这就是代理模式, 正文 代理模式包含以下角色: 抽象主题角色(Subject) 声明真实主题和代理主题的共同接口,可以在任何使用真实主题的...

设计模式——享元模式分析

降低开销提高性能的设计模式

“重复的东西多了就该好好整理才行啊” 前言 面向对象技术可以解决一些灵活性或可扩展性的问题,但需要在系统中增加类和对象的个数。当对象数量太多时,将导致运行代价过高,带来性能下降等问题。为了解决这个问题,我们引入享元模式这一结构型模式。 在享元模式中:将对象之间封装好的,并且可以进行共享的这部分相同内容称为内部状态;而将那些需要外部环境来设置的不能共享的内容称为外部状态;一般享元...

设计模式——外观模式分析

交互过程的简化

“简化用户与多个对象之间的交互哦” 前言 外观模式使用频率非常高,它通过引入一个外观角色,简化了客户端与子系统之间的交互,为复杂的子系统调用提供一个统一的入口,使子系统和客户端的耦合度降低。 正文 外观模式包含以下角色: 外观角色(Facade) 外观模式的核心,关联所以的子系统,负责将客户端请求发送到相应的子系统。 子系统角色(SubSystem) 类或类的集合...

数据结构最优解之链表Lab2.17

环形链表插入新节点

“非连续非顺序、动态地进行存储分配的存储结构“ 正文 题目:向有序的环形单链表中插入新的节点 要求是:一个环形单链表从头节点开始有序。给定一个环形单链表头节点head和一个整数num,插入值为num的新节点。 思路分析 先生成节点值为num的新节点,记为node 当链表为空,让node自己组成环形链表,返回node 链表不为空,记pre=head,cur=...

数据结构最优解之链表Lab2.16

链表的怪异删除

“非连续非顺序、动态地进行存储分配的存储结构“ 正文 题目:一种怪异的节点删除方式 要求是:链表节点值是int类型,给定一个链表中的节点node,但不给定整个链表的头节点。应该如何在链表中删除node。 思路分析 本题的思路很简单,将这个指针指向的next节点值copy到本节点,将next指向next->next,并随后删除原next指向的节点。 代码实现 链...

我的Python物语——第一章第四节

使用工具爬取JS加载的元素

“就算不是单纯的html元素,我也能爬取到哦” 前言 继上一节的旅程,这一节将给大家介绍的是:使用selenium+PhantomJS实现动态数据的处理。 正文 本文需要的组件有:selenium & PhantomJS。请自行下载selenium selenium 简单的介绍一下selenium与PhantomJS: PhantomJS,这是一个基于w...

数据结构最优解之链表Lab2.15

链表与排序

“非连续非顺序、动态地进行存储分配的存储结构“ 正文 题目:对单链表进行选择排序 要求是:给定一个无序单链表的头结点head,实现单链表的选择排序。要求空间复杂度为O(1)。 思路分析 本题主要考核的是对链表的调整技巧。结合选择排序的思路。 具体分析如下: 开始默认链表未排序进行遍历,对于找到的最小值节点记为新的头结点。 每次遍历未排序部分,然后把这个节点...

数据结构最优解之链表Lab2.14

将二叉树转换为双向链表

“非连续非顺序、动态地进行存储分配的存储结构“ 正文 题目:将搜索二叉树转换成双向链表 要求是:对每一个节点来说,原来的right指针等价于转换后的next指针,原来的left指针等价于转换后的last指针,最后返回转换后的双向链表头节点。 思路分析 Zicon在这里使用队列实现,时间复杂度为O(N),空间复杂度为O(N)。 具体分析如下: 生成队列,按照二叉...

数据结构最优解之链表Lab2.13

删除链表中值重复的节点

“非连续非顺序、动态地进行存储分配的存储结构“ 正文 题目:删除无序单链表中值重复出现的节点 要求是:给定单链表头节点head,删除其中值重复出现的节点。 例如:链表1->2->3->3->4->4->2->1->null个例子。调整后为,1->2->3->4->null。 思路分析 最简单的实现...

数据结构最优解之链表Lab2.12

链表逆序特殊情况

“非连续非顺序、动态地进行存储分配的存储结构“ 正文 题目:单向链表每k个数逆序拼接 要求是:给定单链表头节点head,使得每K个节点之间逆序,如果最后不够K个节点一组,则不调整最后几个节点。 例如:链表1->2->3->4->5->6->7->8->null,K=3这个例子。调整后为,3->2->1->6...