- 博客(8)
- 收藏
- 关注
原创 OnlineJudge-OJ最头疼的输入输出问题
OnlineJudge输入输出问题通常来说OJ对于每道题里面有.in和.out文件,分别表示测试数据的输入和输出。如果某些编程题的所有数据都只做在一个.in和一个.out中,这样就会变成多组测试了,所以需要提交的代码中循环处理。其实这个问题可以避免,就是编程题后台每个样例做一组对应的.in和.out文件,这样就变成单组测试,代码就不需要循环处理,但是平时练习的题目质量不一,这个问题都会出现。...
2019-08-31 21:46:41 1496
原创 数据结构与算法——滑动窗口问题
问题引入【问题】有一个整型数组arr和一个大小为w的窗口从数组的最左边滑到最右边,窗口每次 向右边滑一个位置。例如,数组为[4,3,5,4,3,3,6,7],窗口大小为3时:[4 3 5]4 3 3 6 74[3 5 4]3 3 6 74 3[5 4 3]3 6 74 3 5[4 3 3]6 74 3 5 4[3 3 6]74 3 5 4 3[3 6 7]窗口中最大值为5 窗口...
2019-08-31 21:34:21 331
原创 数据结构与算法——二叉树的Morris遍历
二叉树的Morris遍历在二叉树的递归遍历中,有函数的递归调用,递归的深度等于二叉树的高度,也就是说递归导致的调用堆栈的高度等于二叉树的高度,这样的话,程序虽然没有显示的通过new 来分配内存,但实际上消耗的内存大小也是 O(h). 如果二叉树的高度很大,例如搜索引擎把几十亿张网页按照权重来组成二叉树的话,那么二叉树的高度也要几十万作用,因此按照传统的中序遍历,需要消耗大量的内存。下面要讲的M...
2019-08-31 21:20:17 176
原创 数据结构与算法——并查集数组实现
并查集在一些有N个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪个集合中。并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。常常在使用中以森林来表示。主要涉及操作:初始化把每个点所在集合初始化为其自身。通常来说,这个步骤在每次使用该数据结构...
2019-08-31 19:35:38 552
原创 数据结构与算法——KMP算法模板
KMP算法KMP算法指的是字符串模式匹配算法,问题是:在主串T中找到第一次出现完整子串P时的起始位置。该算法是三位大牛:D.E.Knuth、J.H.Morris和V.R.Pratt同时发现的,以其名字首字母命名。下面是KMP算法的C++版本:#include <iostream>#include <string>#include <vector>u...
2019-08-31 19:24:15 246
原创 设计模式之——工厂模式
工厂模式工厂模式概述工厂模式(Factory Pattern)是最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。意图:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。主要解决:主要解决接口选择的问题...
2019-08-31 19:14:01 100
原创 设计模式之——单例模式
单例模式单例模式概述单例模式(Singleton Pattern)是 最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。【主要特点】1、单例类只能有一个实例。2、单例类必须自己创建自己的唯一实...
2019-08-31 18:59:44 109
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人