梨粥
码龄8年
关注
提问 私信
  • 博客:26,979
    26,979
    总访问量
  • 43
    原创
  • 885,618
    排名
  • 6
    粉丝
  • 0
    铁粉
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:内蒙古
  • 加入CSDN时间: 2016-10-15
博客简介:

leigh的博客

博客描述:
自己遇到的问题和解决办法
查看详细资料
个人成就
  • 获得20次点赞
  • 内容获得3次评论
  • 获得35次收藏
创作历程
  • 43篇
    2019年
  • 1篇
    2018年
成就勋章
TA的专栏
  • web前端
    1篇
  • LintCode
  • PHP
    1篇
  • 设计模式
    15篇
  • 数据结构
    23篇
  • Java
    1篇
  • 算法与数据结构
    24篇
  • 计算机常识
    5篇
  • 计算机网络
  • MySql
兴趣领域 设置
  • 数据结构与算法
    排序算法
  • 人工智能
    caffenlpscikit-learn回归
创作活动更多

如何做好一份技术文档?

无论你是技术大神还是初涉此领域的新手,都欢迎分享你的宝贵经验、独到见解与创新方法,为技术传播之路点亮明灯!

178人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

C++ 中的迭代器(Iterator)与 traits

算法与迭代器在C++的STL中,我们最经常使用的只有两部分,一是容器(container),如vector、list、set、map等;二是各种算法,如swap、sort等。前者是模板类,后者是模板函数,也就是说,STL 中提供的算法对它们要操纵的数据一无所知,它所需要的一切信息都必须由Iterator取得,这样算法才能正常运行。下面是find()函数的源代码template <...
原创
发布博客 2019.07.22 ·
559 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

C++ 中的 hashTable

1. 什么是hashTable用来存储数据的最基本的的结构有数组和链表两种,其他结构都是在这两种基础之上的复用与衍生。当用户进行输入时,输入可能有一定的规律,更大的可能性是输入的数据具有很大的随机性,采用数组进行存储的话,索引是一个很大的问题,因为数据的类型不一定为整数;如果采用链表,查找时必须进行遍历,对性能有很大的影响。但我们希望能找到这样的结构,不仅查找时有很高的效率,而且适用于多...
原创
发布博客 2019.07.20 ·
8566 阅读 ·
9 点赞 ·
0 评论 ·
18 收藏

状态模式

1. 什么是状态模式当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。2. 状态模式要解决什么问题当控制一个对象状态转换的条件表达式过于复杂时,可以把状态的逻辑判断转移到一系列类中,将复杂的逻辑简单化。3. 状态模式的代码结构图using System;using System.Collections.Generic;using System.T...
原创
发布博客 2019.07.19 ·
168 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

适配器模式

1. 定义将一个类的接口转换成客户希望的另外一个接口。Adapter、模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。2. 主要解决的问题当系统的数据和行为都正确,但接口不符时,我们应该考虑用适配器,目的是使控制范围之外的一个原有对象与某个接口匹配。适配器模式主要应用于希望复用一些现存的类,但是接口又与复用环境要求不一致的情况,比如在需要对早期代码复用一些功能等应用上很有...
原创
发布博客 2019.07.19 ·
125 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

C++ 中的set/multiset/map/multimap

set/multisetC++中set/multiset以rb_tree(红黑树)为底层结构,因此有元素自动排序的特性。排序的依据就是key,而set和multiset的value和key合二为一,value就是key。set/multiset提供遍历操作及iterators,按正常规则(ite++)遍历就可以得到元素的排序。因为set中的key是唯一的,所以在添加元素时,调用底层结构...
原创
发布博客 2019.07.18 ·
288 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

观察者模式 -- 发布-订阅模式

1. 什么是观察者模式观察者模式定义了一种一对多的关系,让多个观察者对象同时监听某一主题对象。这个对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。2, 观察者模式的结构图using System;using System.Collections.Generic;using System.Text;namespace 观察者模式{ class ...
原创
发布博客 2019.07.17 ·
124 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

C++ 中的红黑树

标准的STL关联式容器可分为两大类set(集合)和map(映射表/字典),以及这两大类的衍生体multiset和multimap。一般而言,关联式容器的内部结构都是一个平衡二叉树,以便获得良好的搜寻效率。平衡二叉树有很多种类型,其中最被广泛运用于STL的是RB-tree(红黑树)。RB-tree也是一个独立容器,但并不开放给外界使用。此外 SGI STL 还提供了一个不在标砖规格之外的关联式容...
原创
发布博客 2019.07.17 ·
422 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

抽象工厂模式

1. 什么是抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。使用多数据库的代码如下(抽象工厂模式实现)using System;using System.Collections.Generic;using System.Text;namespace 抽象工厂模式{ class Program { static ...
原创
发布博客 2019.07.16 ·
116 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

建造者模式

1. 什么是建造者模式将一个复杂对象的构建与它的表示相分离,使得同样的构建过程可以创建不同的表示。2. 建造者模式的结构图3. 使用建造者模式的优势使得建造代码与表示代码分离,由于建造者隐藏了该产品是如何组装的,所以若需要改变一个产品的内部表示,只需要再定义一个具体的建造者就可以。4. 建造者模式的使用场合用于创建一些复杂的对象,这些对象内部构件间的建造顺序通常是稳定的...
原创
发布博客 2019.07.10 ·
91 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

外观模式 -- 门面模式

1. 什么是外观模式为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。2. 外观模式的结构图3. 外观模式的优势增加外观Facade可以提供一个简单的接口,减少不同子系统之间的依赖,降低耦合度。4. 使用时间当维护一个遗留的大型系统时,可能这个系统已经非常难以维护和扩展了,可以为新系统开发一个外观Facade类,来提供...
原创
发布博客 2019.07.10 ·
116 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

迪米特法则 -- 最少知识原则

1. 什么是迪米特法则如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果其中一个类需要调用另一个类的某个方法的话,可以通过第三者转发这个调用。也就是说,在类的程序结构设计上,应当尽量降低成员的访问权限,即强调类之间的松耦合。2. 优点迪米特法则强调类之间的松耦合,类之间的耦合越弱,越有利于复用,一个处在弱耦合的类被篡改,不会对类的关系造成波及。...
原创
发布博客 2019.07.08 ·
134 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

模板方法模式

1. 什么是模板方法模式定义一个操作中算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的一些特定步骤。其实就是当一个类的实例中有很多重复的部分存在时,可以将这些重复的部分提取到父类,仅给子类留下不同的部分来设置。如下方考卷类,仅留下answer 部分由子类负责,其余全部由父类负责。using System;using System....
原创
发布博客 2019.07.08 ·
111 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

原型模式

1. 什么是原型模式用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。2. 原型模式结构图3. 原型模式的优点克隆不需要重复初始化新的对象,而是动态的获取对象运行时的状态,这样既隐藏了对象创建的细节,又对性能大大进行了提高。4. copy 与 clone假如存在数据集DataSet,那么它的clone 方法一般用于复制dataSet的结构,但不复制dataS...
原创
发布博客 2019.07.08 ·
116 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

gcc-2.95.tar.gz

发布资源 2019.07.06 ·
gz

跳表--SkipList

跳表是实现有序表的方式之一,但和传统的采用树结构(如红黑树、SB树等)的实现方式不同,跳表是用概率来为数据划分层数的,即使用一个随机函数来实现它自己的平衡性。一个节点所在的层数,大概是通过一种抛硬币的方式来实现的(假设硬币正面表示为1,反面表示为0),假设第一次抛出结果是0,第二次抛出结果是0,第三次抛出结果是1,那么这个节点就在第二层。即该节点抛出了几个0,该节点就在第几层。跳表的基础节点的...
原创
发布博客 2019.05.13 ·
179 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

位运算相关题目

【题目】给定两个有符号32位整数a和b, 返回a和b中较大的。【要求】不用做任何比较判断。#include <iostream>using namespace std;//参数n不是1就是0//返回值是n取反后的结果int flip(int n){ return (n ^ 1);}//如果n是非负数,返回值是0//如果n是负数,返回值是1in...
原创
发布博客 2019.04.28 ·
333 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

大数据题目

【题目】32位无符号整数的范围是0~4,294,967,295, 现在有一个正好包含40亿个无符号整数的文件, 所以在整个范围中必然存在没出现过的数。 可以使用最多1GB的内存, 怎么找到所有未出现过的数?对于这道题目可以使用位图。42亿的整数需要的存储空间为40亿* 4 Byte = 4 * 4 G = 16G,但如果使用位图只需要16G / 32 = 0.5G内存即可。位图如何使用呢?...
原创
发布博客 2019.04.27 ·
840 阅读 ·
1 点赞 ·
1 评论 ·
1 收藏

树形dp

题目:二叉树节点间的最大距离问题从二叉树的节点a出发, 可以向上或者向下走, 但沿途的节点只能经过一次, 到达节点b时路径上的节点个数叫作a到b的距离, 那么二叉树任何两个节点之间都有距离, 求整棵树上的最大距离。分析对于树上的任意一个节点,它的最大距离有3种可能性,分别是左子树的最大距离、右子树的最大距离、和左子树的高度加右子树的高度加1。如果该节点最大距离等于左子树的最大距离或右子树...
原创
发布博客 2019.04.26 ·
474 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Morris遍历

Morris遍历在学习树结构的过程中,不论是递归或者非递归方式实现的遍历,都需要用到很多额外的空间结构。递归遍历使用系统栈完成遍历,非递归使用自己构建的栈或队列来完成,今天学习的Morris遍历只需要很少的额外空间,它的空间复杂读为O(1),时间复杂度仍然是O(N)就可以完成遍历。Morris遍历用到的结构在学术上称为线索二叉树,利用二叉树中原本的空指针来作为遍历时的标志,以此达到节省空间...
原创
发布博客 2019.04.26 ·
135 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

滑动窗口与单调栈结构

滑动窗口最大/小值更新结构现在有一个数组arr,有两个指针L、R。初始时L、R都指向-1,L、R都只能向右滑动,且L不能超过R。请快速求出L到R中间的最大值。创建一个双向队列,队列始终保持从大到小排列。当R向右滑动时,如果新加入窗口的数字大于双向队列头节点的数字,则从队列中弹出节点直到队列中即便添加新数字后也可以保持从大到小排列。队列中头节点的最大值就是窗口内的最大值。假设存在数组ar...
原创
发布博客 2019.04.25 ·
527 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏
加载更多