- 博客(68)
- 收藏
- 关注
原创 数据结构与算法-数组
数组是应用最广泛的一种数据结构,常常被植入到编程语言中,作为基本的类型来使用,因此在一些介绍数据结构的文章中,数组没有被当做一种数据结构单独拿出来讲解。鉴于大家对数组都不陌生,可以将其作为学习数据结构的敲门砖。数组的优势在于能够进行快速的查找,如果知道下标,则可以瞬间将元素取出,但是对于元素的删除和插入则非常慢。所以,如果面临的问题需要对数据进行快速的查找,且很容易获得下标,此时就可以考虑...
2018-03-19 21:30:31
410
原创 数据结构-线性表(栈与队列的特殊性)
通过前面的介绍我们知道,数据结构按照对应关系可以分为一对一的线性表结构、一 对多的树形结构,多对多的图形结构,以及同属一个集合的集合结构。 在此我们分析一下线性表结构: 对于线性表我们知道有数组、链表、栈与队列等结构。 其中栈与队列的实现都可以由数组或者链表来实现,那么为什么还要在对线性表进行划分的时候把栈与队列单独拿出来说呢? 在此我们不考虑栈与队列的实现,只分析对数据结构的操作,链表可以
2018-02-03 15:14:11
1866
原创 剑指-从上到下打印二叉树
1、注意和前序、中序、后序遍历打印区别开来。 2、借助于队列class Solution {public: vectorint> PrintFromTopToBottom(TreeNode* root) { if (!root)return result; que.push(root); while (!que.empty())
2018-01-21 17:10:16
285
原创 包含min函数的栈
注意:题目不是实现一个栈,而是在栈的基础上实现一些操作class Solution {public: void push(int value) { st.push(value); if (smin.empty()) smin.push(value); if (smin.top() > value)
2018-01-21 16:25:48
212
原创 剑指-顺时针打印矩阵
注意:在每次进行循环进行读写时,一定要判断left、right、top、bom的关系 vectorint> printMatrix(vectorvectorint> > matrix) { vectorint> vecResult; if (matrix.size() == 0)return vecResult; int rowCoun
2018-01-21 16:01:44
237
原创 剑指-二叉树的镜像
注意此处:不要单独把左右子节点拿出来,会出错,目前还不知道原因 void Mirror(TreeNode *pRoot) { if (pRoot == NULL)return; TreeNode* temp; temp = pRoot->left; pRoot->left = pRoot->right; pRoot->right = temp;
2018-01-21 15:41:41
220
原创 剑指-从尾到头打印链表
一定要看清楚题目是从尾到头打印链表!!! vectorint> printListFromTailToHead(ListNode* head) { vectorint> vec; if(head == NULL) { return vec; } ListNode* temp
2018-01-21 14:40:57
224
原创 剑指-二维数组中的查找
注意判断数组是否为空!!!bool Find(int target, vectorvectorint> > array) { if (array.empty())return false; int rowCount = array.size(); for (int i = 0; i < rowCount; i++) { if (array[
2018-01-21 14:39:53
220
原创 剑指-利用树的前序遍历和中序遍历结果,输出树的原始结构
需要注意两点:1、对于前序遍历第一个即为根节点。2、在前序遍历找到根节点之后,在中序遍历中根节点之前的全部为根节点的左子树,后面的全部为右子树。所以可以根据中序遍历中根节点之前的数量,在前序遍历中找出左子树。3、递归实现就可以。TreeNode* reConstructBinaryTree(vector<int> pre, vector<int> vin) { int len = pre.
2018-01-21 14:39:00
276
原创 剑指offer-用两个栈实现一个队列
注意使用一个栈存储从头到尾的数据,然后利用该栈输出数据,同时使用另外一个栈存储从尾到头的数据。 void push(int node) { stack1.push(node); } int pop() { if (stack2.empty()) { while (!stack1.empty())
2018-01-21 14:37:24
152
原创 数据结构与算法-栈
定义:栈是一种特殊的有序表,因为其插入和删除都在一端进行。 栈是一种先进后出的结构,被操作的元素被称之为栈顶,栈在任何时候被操作的元素只有一个那就是栈顶元素。实现: 1、数组 2、链表栈的操作isEmpty():判断栈是否为空push(stackItem):入栈pop():出栈需要记录的数据 1、栈顶元素:在此关于栈顶元素有的认为是就是栈最上面的元素,也有的认为是栈顶元素位置的下一个位置
2017-09-29 14:21:31
290
原创 数据结构与算法-队列
队列:队列与栈不同,它是一种先进先出的结构实现: 1、数组 2、链表记录的数据: 1、队首位置:第一个元素的位置 2、队尾位置:最后一个元素的位置 3、队列大小:size队列操作:entryQueue():入队exitQueue():出队isQueueEmpty():队列为空isQueueFull():队列满队列的实现(顺序数组的实现) 将队列的定义放在queue.h中class
2017-09-29 01:19:31
336
原创 华为机试-坐标移动
#include<iostream>#include<string>#include<math.h>#include<vector>#include<map>#include<set>using namespace std;typedef struct point{ int posx; int posy;}pos;void SplitSting(const strin
2017-09-28 21:25:12
417
原创 C++ 结构体
为什么要用结构体:在我们对数据进行定义时,对于单个数据我们有int char等数据类型对其进行描述; 对于多个相同类型的数据,我们可以使用数组对其进行描述如int[] char[]等; 但是对于数组,要求数组中的数据类型要一致,可对于那种也是要求放在一组当中的数据,但是各个数据项之间又不是同一种数据类型,这时候用什么数据类型对其进行描述呢,此时就用到了结构体。概述:结构体是用户自定义的一种数据类
2017-09-28 19:52:43
280
原创 数据结构与算法-链表
在讲述链表之前让我们对数据结构进行一个简单的回顾:我们知道,数据结构指的是描述实际问题中各个数据项节点之间的前后逻辑结构关系,即要么是线性结构(即某一数据项的前继节点和后继节点有且只有一个)要么是非线性结构(即某一数据节点的前驱或者后继节点不止一个)。在确定了实际数据项的数据结构之后,我们要采用某种存储方式对其进行存储,常见的数据结构的存储方式有:顺序存储、链式存储、散列存储以及索引存储。每一种存...
2017-09-23 15:58:23
954
原创 C++ 关联容器
C++中对于容器的分类主要分为:顺序容器和关联容器。 顺序容器:主要是靠元素在容器中的存储位置保存和访问的。 关联容器:元素主要是靠关键字来保存和访问的。 关联容器和顺序容器的很多行为是一样的,不同之处反映了关键字的作用。 关联容器支持高效的关键字查找和操作。两个主要的关联容器为:map和set。
2017-09-21 23:09:51
190
原创 华为机试-字典排序
#include<iostream>#include<string>#include<math.h>#include<vector>#include<map>#include<set>using namespace std;int main(){ int nInput; cin >> nInput; multiset<string> miset; for(
2017-09-21 22:33:23
731
原创 C++流对象
1、概念 在程序设计当中免不了要对数据进行输入输出,在C语言中我们经常使用scanf()、printf()进行输入输出操作,但是在C++中,我们使用流对象来对数据进行输入输出操作,流在输入源和输出目标之间充当了桥梁的作用。 根据操作对象的不同,流可以分为控制台流(iostream)、文件流(fstream)以及字符串流(sstream),上述三种类的流均继承基础流类(i
2017-09-14 21:16:18
4960
2
原创 C++ 字符串(string类)
概述:对于字符串在C++中的表现我们可以使用两种方式。其一,使用字符数组的形式,这种风格是C语言形式的。其二,就是使用string类来表示字符串。下面我们分别看一下这两种形式: 一、字符数组: 比如下面这段代码:#include <iostream>using namespace std;int main (){ char temp[6] = {'H', 'e', 'l', 'l',
2017-09-11 19:57:27
292
原创 华为机试-数字颠倒
#include<iostream>#include<string>#include<math.h>using namespace std;void intToString(int nInput){ int nInt; if(nInput!=0) { nInt = nInput % 10; nInput = nInput / 10;
2017-09-11 19:28:45
250
原创 华为机试-统计不同字符个数
#include<iostream>#include<string>#include<math.h>using namespace std;int main(){ char szResult[128] = {}; string strInput; while(cin>>strInput) { int nCount=0; int
2017-09-08 19:27:49
213
原创 华为机试-取近似值
#include<iostream>using namespace std;int main(){ float fInput; while (cin>>fInput) { int nTemp; nTemp = fInput * 10; int nHight = nTemp / 10; int nLow = n
2017-09-07 23:25:08
253
原创 华为机试-质数因子
#include<iostream>#include<string>#include<math.h>using namespace std;int numberCount(int nNumber, int& nCount){ nCount ++; nNumber = nNumber/10; if(nNumber != 0) { nNumber
2017-09-07 19:34:55
278
原创 华为机试-字符转换
#include<iostream>#include<string>#include<math.h>using namespace std;int main(){ string szInput; int nSum = 0; while(cin>>szInput) { int nLength = szInput.length();
2017-09-06 21:14:27
271
原创 华为机试-字符串的分割
#include<iostream>#include<string>#include<math.h>using namespace std;int main(){ string sInputString; char szOutputString[8]= {}; while(getline(cin, sInputString)) { int nL
2017-09-05 19:33:44
300
原创 数据结构-数组
数组作为一种数据结构是线性表(逻辑结构)顺序存储(存储结构)的一种典型方式,由于任何一种逻辑结构都可以采用顺序存储的方式,所以从这方面看,数组可以表示任何的数据结构,只不过在时间和空间复杂度方面区别会比较大。 所以在此我们利用数组来简单谈谈数据结构:数组: 逻辑结构|:线性结构 存储结构:顺序存储 算法:增删改查等,对于其上的操作没有特别的限制(例如对于栈,其操作集中在一端进行)。publi
2017-09-03 14:38:43
633
原创 C++debug调试出现heap corruption detected: after normal block 可能的原因
最近在刷C++题目的代码,在刷题过程中出现了heap corruption detected: after normal block这种错误出现的概率应该还是蛮高的:这是典型的内存溢出错误,常在delete处发生,而且一般在debug版本中出现,release版本中可能并不报错。 这种错误的出现一般是在程序中new出一段内存后,在使用的过程中无形的增加了new出来的内存长度,在delete的时候没
2017-09-03 11:42:21
7852
原创 华为机试-明明的随机数
#include<iostream>#include<string>using namespace std;int main(){ int randomNumberCount; while(cin>>randomNumberCount) { int *p = new int[randomNumberCount](); for(int in
2017-09-03 11:27:29
294
转载 Cookie是什么
定义: Cookis直译过来就是“小型文本文件”的意思。 在计算机术语中,Cookis是指某些网站为了辨别用户身份而储存在用户本地终端(Client Side)上的数据。分类: Cookie总是保存在客户端中,按在客户端中的存储位置,可分为内存Cookie和硬盘Cookie。 内存Cookie(非持久Cookie):由浏览器维护,保存在内存中,浏览器关闭后就消失了,其存在时间是短暂的。 硬
2017-08-26 12:48:27
1479
原创 python调试
我在python代码中想打印中文显示,如下: 运行程序会出现如下错误: SyntaxError: Non-ASCII character ‘\xe7’ in file e.py on line 6, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details这是因为没有把字符显示转为UTF-8的原
2017-08-26 12:09:33
200
原创 python-爬虫(1)
python爬虫主要分为三个部分:抓取、分析以及存储。1、抓取:如何抓取网页内容呢?使用urllib2或者request抓取网页内容。 打开百度-图片,我们看到的是一张张精美的图片,但其实这是由浏览器解释才呈现出来的,实质上它是一段HTML+JS+CSS代码。下面我们抓取百度首页的源码为例: 1、使用urllib2库import urllib2url= "http://www.baidu.co
2017-08-24 22:15:59
412
原创 URL(统一资源定位符)
互联网上各种信息都有,并散布在各个服务器站点中,但是资源却有着唯一标识它们的地址值。如果想得到某个资源,这时候就需要知道该资源在互联网中的唯一的地址,也就是统一的资源定位符(URL)。统一资源定位符(URL)标准格式如下: 协议类型:[//服务器地址[:端口号]][/路径]文件名[?查询][#片段]1、传送协议(比如http,https,FTP等) 2、服务器。(通常为域名(www.baidu.
2017-08-24 20:24:36
2413
原创 端口号的理解
端口:一般我们所说的端口都会与网络有关,将其分为物理端口和逻辑端口两种。 物理端口:指的就是我们的电脑上的物理接口,比如说连接路由器的接口,集线器接口(如果有的话)等等。 逻辑端口:是指电脑中用于区分网络服务的接口,比如用于浏览网页服务的80端口,用于FTP服务的21端口等。由于端口众多,我们就对相应的端口进行了编号,端口号的范围从0-65535。如果一个软件拥有多于一个的端口号,说明该软件的网
2017-08-24 20:05:57
1060
原创 如何将本地代码使用Git上传至Github
1、第一步注册Github账号: 2、注册结束之后会有在页面上方用户菜单上选择 “+”->New repository 创建一个新的仓库 3、为仓库取一个名字,点击Create repository 就成功创建了一个仓库。 4、Github是一个托管平台,相当于一台服务器,如果想对其进行操作,还必须安装Git客户端,使用相应的git指令对其进行操作。5、安装Git客户端 windows用户请
2017-08-20 13:15:38
3352
原创 Git与Github的区别
关于Git与Github的关系,网上大家已经说了很多了。 学术说法: git是一个版本控制工具。 github是一个用git做版本控制的项目托管平台。其实这里关于Git与Github的关系已经说得非常明白了:Github是一个项目托管平台,我们把自己的项目和代码,放在这个平台之上,使用相应的Git指令,对其进行相应的版本控制(比如增删改查项目中某些代码,更新项目版本等等)。关于Github与其
2017-08-19 10:41:52
426
转载 数据结构的简单理解(4)
总结: 数据的逻辑结构、数据的存储结构及数据的运算这三方面是一个整体。孤立地去理解一个方面,而不注意它们之间的联系是不可取的。 存储结构是数据结构不可缺少的一个方面:同一逻辑结构的不同存储结构可冠以不同的数据结构名称来标识。 【例】线性表是一种逻辑结构,若采用顺序方法的存储表示,可称其为顺序表;若采用链式存储方法,则可称其为链表;若采用散列存储方法,则可称为散列表。 数据的运算
2017-08-12 17:30:23
314
1
转载 数据结构的简单理解(3)
数据的存储结构可以可以分为以下四种: (1)顺序存储方法 该方法把逻辑上相邻的结点存储在物理位置上相邻的存储单元里,结点间的逻辑关系由存储单元的邻接关系来体现。 由此得到的存储表示称为顺序存储结构 (Sequential Storage Structure),通常借助程序语言的数组描述。 该方法主要应用于线性的数据结构。非线性的数据结构也可通过某种线性化的方法实现
2017-08-12 17:12:49
317
转载 数据结构的简单理解(2)
数据逻辑的结构: 在不产生混淆的前提下,我们常常将数据的逻辑结构称之为数据结构,这样的话数据结构可以分为两类:线性结构和非线性结构(不掺杂存储关系)。1、线性结构: 线性结构:若结构是非空集,则有且仅有一个开始结点和一个终端结点,并且所有结点都最多只有一个直接前趋和一个直接后继。 线性表是一个典型的线性结构。数组、栈、队列、串等都是线性结构。2、非线性结构: 非线性结构:一个结点可能有多个直
2017-08-12 16:48:14
294
原创 数据结构的简单理解(1)
一直以来对数据结构都不是特别理解,前段时间正好看到一位大神的解说,让自己对数据结构有了进一步的认识,故在此记录,希望能够帮助更多人去理解数据结构。 数据结构一般包含如下三个方面:1、数据的逻辑结构 数据的逻辑结构可以看做是从具体问题中抽象出来的数学模型,仅仅描述数据之间的逻辑关系(理解到这里就可以了),与数据在计算机中的存储位置无关,独立于计算机之外。2、数据的存储结构: 是数据的逻辑结构在计
2017-08-12 16:38:14
7043
原创 SyntaxError: Missing parentheses in call to 'print'
在笨方法学python 中,有时候我们使用print打印时,会输出如下错误: Missing parentheses in call to ‘print’ 原因:这是因为我们使用python3.0的语法,来运行pyhton2.x的代码。 解决方法:把我们的print后面的变量加上()就好了,即print “ssssssssss”换成print(“ssssssssss”)。
2017-08-08 21:40:42
1103
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人