自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(79)
  • 收藏
  • 关注

原创 机器学习

机器学习的几种学习方法统计学习:监督学习,无监督学习,半监督学习,强化学习。这里引入统计学习和机器学习的区别:1.统计学习是theory-driven,对数据分布进行假设,以强大的数学理论支撑解释因果,注重参数推断(Inference);机器学习是data-driven,依赖于大数据规模预测未来,弱化了收敛性问题,注重模型预测(Prediction);2.机器学习建立在统计学习基础之上。...

2020-01-29 14:40:22 288

原创 leetcode_35.搜索插入位置

搜索插入位置:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例 2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4示例 4:输入: [1,3,5,6], ...

2019-12-25 16:28:14 171 1

原创 leetcode_9.移除元素

移除元素:给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。示例 2:给定 nums = [0...

2019-07-10 21:33:40 194

原创 leetcode_8.删除排序数组中的重复项

删除排序数组中的重复项:给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 示例 2:给定 nums = [...

2019-07-10 20:05:24 141

原创 leetcode_7.合并两个有序链表

合并两个有序链表:将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4一.递归法:首先处理链表 l1和 l2是否为空的情况因为l1和l2是有序链表,比较它们的第一个数,若l1<l2,则递归调用mer...

2019-07-10 17:04:13 150

原创 leetcode_6.有效的括号

有效的括号:给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例 2:输入: "()[]{}"输出: true示例 3:输入: "(]...

2019-07-09 21:44:21 111

原创 leetcode_5.最长公共前缀

最长公共前缀:编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入: ["flower","flow","flight"]输出: "fl"示例 2:输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。说明: 所有输入只包含小写字母 a-z 。自己写了一个多小时写好了,但提交总...

2019-07-09 20:17:53 114

原创 leetcode_4.罗马数字转整数

罗马数字转整数:罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,...

2019-07-09 15:25:15 135

原创 leetcode_3.回文数

回文数:判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文...

2019-07-09 14:38:57 102

原创 leetcode_2.整数反转

整数反转:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例1:输入: 123输出: 321示例2:输入: -123输出: -321示例3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−2^31, 2^31 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。我...

2019-07-09 14:08:40 89

原创 刷leetcode的说明

我昨天做了leetcode简单题目的第一题,花了一个多小时,做起来觉得题目并不复杂却很吃力,开始怀疑自己觉得自己是不是挺笨,心态有点炸裂。好在上网冲浪发现许多小伙伴都是比较吃力,也看到了很多好的解答,对自己刷leetcode也想划分一下任务。我看到有龟系刷题,兔系刷题,结合我目前的状态想了想,我选择兔系刷题。从2019.7.7号开始每天刷3道easy,每题一个小时以内写完并总结成博客,只要10...

2019-07-07 16:50:31 197

原创 leetcode_1.两数之和

两数之和:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 示例:给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1]/**...

2019-07-06 13:17:35 101

原创 哈夫曼编码和译码的实现

哈夫曼编码和译码的实现#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>using namespace std;/*哈夫曼树的应用----哈夫曼编码*///哈夫曼树的结点结构typedef struct HuffmanTree{ in...

2019-07-04 18:10:10 2035

原创 哈夫曼树的搭建

哈夫曼树的实现先放代码,明天补充完整。今天心累的我…#include <iostream>#include <cstdio>#include <cstdlib>using namespace std;/*哈夫曼树的应用----哈夫曼编码*//*根据哈夫曼算法:1.若给定n个权值的结点构造n棵二叉树, 其中n棵二叉树的根结点分别为这n个...

2019-07-02 20:53:10 170

原创 哈夫曼树及哈夫曼编码的概念

一.哈夫曼树给定n个权值作为n个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。话不多说,直接上图:求出三个二叉树的带权路径长度WPL,其中WPL( c )最短,c为哈夫曼树。那么如何构造哈夫曼树?哈夫曼给出了哈夫曼算法:①.根据给定的n个权值构造成...

2019-07-01 19:37:45 840

原创 树的3种常用链表结构

树的3种常用链表结构双亲表示法typedef struct{ elemType data; int parent;}TNode;typedef struct{ TNode T[100]; int r,n; //根的位置和结点数}Tree;对应结构如下图:(显然很容易进行Parent操作,缺点是不容易进行Child操作)孩子表示法typedef struct C...

2019-07-01 14:52:35 1999

原创 线索二叉树的中序遍历线索化实现

先码着,明天添加文字说明#include <iostream>#include <cstdio>#include <cstdlib>using namespace std;typedef enum Tag{ Ptr,Thread}PointerTag;//Ptr=0:指针,Thread=1:线索 //二叉链表的结点结构 typede...

2019-06-30 21:48:34 4623 4

原创 中序遍历二叉树的非递归实现(利用栈)

先待补充文字,以下是完整代码#include <iostream>#include <cstdio>#include <cstdlib>using namespace std;#define STACK_INIT_SIZE 100 //栈的初始化容量 #define STACK_INC_SIZE 10 //栈的分配增量 typed...

2019-06-29 21:14:35 2820 1

原创 线索二叉树的讨论

线索二叉树前面谈到了遍历二叉树,遍历二叉树是以一定规则(先序,中序或后序)将二叉树中的结点排列成一个线性序列。这实际上是对非线性化结构进行线性化操作,使每个结点(除第一个和最后一个外)在这些序列中有且仅有一个前驱或后继。但当以二叉链表作为存储结构时,只能找到结点左右孩子的信息,并不能得到结点的前驱和后继信息。一种比较简单的方法当然是在每个结点结构中再加入两个指针域,前驱指针域保存其前驱...

2019-06-27 18:50:15 199

原创 遍历二叉树及其递归实现

遍历二叉树在二叉树的应用中,常常要求在树中查找具有某种特征的结点,或者对树中的结点逐一进行某种处理,这就出现了一个如何遍历二叉树的问题。我们希望能按照某条搜索路径访问树中的每一个结点,并使得每个结点有且仅被访问一次。“访问”的含义很多,可以是对结点作各种处理,如输出结点的信息等。遍历对线性结构来说是一个容易解决的问题,而对于二叉树则不然,由于二叉树是一种非线性结构,它的每个结点都可能有0~2...

2019-06-26 22:00:25 217

转载 波兰式与逆波兰式

这里我看了一下,存两篇写的比较简单明了的博客。http://blog.sina.com.cn/s/blog_1745c5ec50102x3qu.htmlhttps://blog.csdn.net/edogawachia/article/details/79504702

2019-06-26 17:06:47 336

原创 二叉树的存储结构讨论

顺序存储结构按照顺序存储结构的定义,若约定用一组地址连续的存储单元由根结点开始,自上而下,从左至右为每个结点依次编号,则i个结点将顺序存储在0到i-1的数组中。我们可以发现,当为完全二叉树或满二叉树时,使用顺序存储结构可以依次为结点编号,比较适用;而当二叉树是普通二叉树时,我们则需要为空结点的编号信息置为0以标识为空,在最坏情况下,一个深度为k且只有k个结点的单支树则需要长度为2^k-1的一...

2019-06-26 16:09:46 182

原创 二叉树的定义及重要特性

二叉树二叉树:每个结点至多只有两颗子树(即二叉树中不存在度大于2的结点),并且二叉树的子树有左右之分,其次序不能任意颠倒。满二叉树:即每一层上的结点数都是最大结点数。 若其深度为k,则有2^k-1个结点。完全二叉树:若把二叉树的结点从根结点开始,由上到下,从左到右依次编号。完全二叉树即为满二叉树从其最大的编号结点依次往前出栈任意次后的结果。下图为它们的示例图:由二叉树的定义和其特殊形...

2019-06-21 21:58:25 1559 1

原创 内联函数与类

内联函数系统在调用函数时需要时间和空间的开销。在主函数中调用另外一个函数时,这个函数就要到内存入栈或者从内存中出栈。假设我们需要在主函数中调用一个简单的输出打印函数,如果需要调用函数100次,则意味着这个简单的函数需要进栈出栈100次,这样就把大量的时间花费在进栈和出栈上了,从而降低了程序执行的效率。而某些应用程序对效率又有较高的要求,要求系统响应时间尽量短,就提出了尽量压缩时间开销的要求。...

2019-06-21 20:07:46 557

原创 数据结构—树的基本概念名词

树的基本概念名词根结点只有一个:A子树:除根结点外,每个子结点可以分为多个不相交的子树。例如:{B,E,F,F,K,L},{C,G},{D,H,I,J,M}都是根结点A的子树;{E,K,L},{F}又是它们的根结点B的子树。度:结点拥有的子树数称为结点的度。例如:A的度为3,B的度为2,C的度为1,F的度为0。树的度是树内各结点的度的最大值。叶子结点/终端结点:度为0的结点。例如:K,L...

2019-06-12 20:17:27 1230

原创 数据结构—循环队列的实现

数据结构—循环队列和顺序栈相类似,我们在队列的顺序存储结构中,附设两个指针front和rear分别指示队列首尾元素的位置。约定:初始化建空队列时,令front=rear=0。每当插入队尾元素时,尾指针加1;每当删除队首元素时,头指针加1。因此,在非空队列中,头指针始终指向队列首元素,尾指针始终指向队列尾元素的下一个位置。假设队列的最大空间为5,当我们删除又插入后,头指针或尾指针会越界,而此时...

2019-06-12 16:51:42 441

转载 汉诺塔的理解问题

转载 汉诺塔的理解问题 2018年08月30日 11:32:01 程二有点独 阅读数:318 ...

2019-06-10 20:17:46 177

原创 栈的应用实例4—表达式求值

栈的应用实例4—表达式求值这里用栈的特殊结构实现了算术的四则运算:先乘除后加减,从左算到右。输入格式举例:#4+2*3-10/5#(#为句子的开始或结束符号)。这里我偷了个懒,并没有实现改变优先级的 “(” 和 “)” ,原理一样。首先定义了两个栈,一个为运算符栈,一个为操作数栈。思路简单来说即为:  ①.构造一个算符优先关系表,开始符号进栈,第一个操作数进栈。  ②.当运算符进栈的时候...

2019-06-09 21:51:31 633

原创 栈的应用实例3—迷宫求解问题

栈的应用实例3—迷宫求解问题用栈求解迷宫问题:#include <iostream>#include <cstdio>#include <cstdlib>using namespace std;#define STACK_INIT_SIZE 1000 //栈的初始化容量 #define STACK_INC_SIZE 100 //栈的...

2019-06-08 21:57:20 323

原创 栈的应用实例2—括号匹配的检验

栈的应用实例2—括号匹配的检验假设表达式中允许包含两种括号:圆括号和方括号,其嵌套的顺序随意。例如:( [ ] ( ) ) 或 [ ( [ ] [ ] ) ] 等为正确的格式;而 [ ( ] )或( ( ) ] ) 等均为不正确的格式。那么如何写一个程序可以检验括号匹配是否通过呢?通过人工检验,不难发现我们若把它放到计算机,用计算机的思维去代入问题,则是这样的一种解决方法:①.输入一...

2019-06-07 17:45:52 1219

原创 栈的应用实例1—数制转换

栈的应用实例—数制转换先复习一下数电和组成原理课程中所学过的进制转换问题。常见的进制有十进制(D),八进制(O),十六进制(H),二进制(B)。它们之间的部分转换如下:这里有一个例子转换为八进制的结果为2504,可以看出正好与运算过程的值逆序。因此我们可以将运算过程中得到的八进制数的各位顺序进制,然后按出栈序列打印输出即为所求八进制数。我们这里可以用上次的博客里写的程序来完成。...

2019-06-06 20:17:57 1025

原创 数据结构—顺序栈的基本功能实现

数据结构—顺序栈的基本功能实现栈是仅限在表尾进行插入或删除操作的线性表。栈中有栈底(表头端)和栈顶(表尾端),栈又被称为后进先出线性表(LIFO结构)。当top=base时,栈为空。每当一个元素进栈时,top指针加1;每当一个元素出栈时,栈顶元素减1。即非空栈中的栈顶指针始终在栈顶元素的下一个位置上。下面是顺序栈的代码实现#include <iostream>#incl...

2019-06-06 18:38:22 199

原创 单链表结构实现和循环链表及双向链表的定义

单链表基础结构实现这里我并没有写增删改查的功能,参考了数据结构严蔚敏版一书。然后我发现按他的那段初始化伪代码实现后,结点倒过来了,不过并不影响道理。重点需要搞清楚单链表的结构,C好久没用去学面向对象了,结构体和malloc我有点忘记了,码在这里以后忘了当参考。#include <iostream>#include <cstdio>#include <cs...

2019-06-06 16:42:40 933

原创 数据结构—顺序表的基本功能实现

顺序表的基本功能实现线性表是数据结构的基础结构。数据结构+算法=程序,今天结束了C++的书本自学,扎进数据结构和算法的世界里。线性表分为顺序存储,链式存储,索引存储,散列存储等。顺序存储即顺序表,链式存储即链表。关于数据结构,最重要的是会画图,明白逻辑结构和物理结构。不急不燥,代码不是一气呵成的,需要长久的练习和耐心。下面是顺序表的实现代码:#include <iostrea...

2019-06-05 21:29:32 1457

原创 异常处理中的构造和析构函数

异常处理中的析构函数C++异常处理的真正能力不仅在于它能处理各种不同类型的异常,还在于它具有异常处理前为构造的所有局部对象自动调用析构函数的能力。如果try块(或try块调用的函数)中定义了类对象,在建立该对象时要调用构造函数。如果在执行try块(或try块调用的函数)的过程中发生了异常,此时流程立即离开try块。那么此时流程就可能离开该对象的作用域而转到其他函数,因此应当做好结束对象前的清...

2019-06-05 15:14:51 728

原创 定义“异常类”处理异常

定义异常类处理异常类似上一个博客中的例子输入一个学生的考试总分及科目数,计算并输出该学生的平均分。通过定义异常类的方式来处理除数为0和输入为负的异常。#include <iostream>using namespace std;//定义除数为0异常类class ZeroException{ private: char* msg; public: Zero...

2019-06-05 12:44:41 667

原创 C++_异常处理

异常处理在程序运行时,可能会遇到各种异常问题,例如:两数相除时除数为0,数组越界,内存空间不够,无法打开输入文件而不能读取数据,输入数据的类型有错等。如果程序没有对这些问题进行防范,导致程序出错,系统就只能终止程序的运行。因此,在设计程序时,应当分析程序运行时可能出现的各种意外情况,并分别指定相应的处理方法,增强系统的容错能力,这就是程序异常处理的作用。在小型程序中,异常处理方法比较简单,通...

2019-06-05 11:44:51 216

原创 STL_算法与迭代器

STL_算法  算法是STL的重要组成部分。STL提供了大约100个实现算法的模板函数,用户可以通过调用算法模板完成所需的功能。  一般来说,STL中的算法部分主要由头文件< algorithms>,< numeric>,< functional>组成。其中,头文件< algorithms>由模板函数组成,常见的函数涉及比较,交换,查找,排序等。...

2019-06-03 20:45:40 187

原创 STL_容器

容器  STL容器允许重复利用已有的实现构造自己特定类型下的数据结构,通过设置一些模板类,这些模板的参数允许用户指定容器中元素的数据类型,从而可以提高编程效率。  容器部分主要由头文件< deque>,< vector>,< list>,< map>,< queue>,< set>,< stack>组成。下表为...

2019-06-02 21:30:59 106

原创 C++泛型编程与STL标准模板库

引言  标准模板库(Standard Template Library,STL) 是一个高效,实用的C++程序库。它被容纳于C++标准库中,是ANSI/ISO C++标准中最新的,也是极具革命性的一部分。该库包含了诸多计算机科学领域里常用的基本数据结构和基本算法,也为C++程序员们提供了可扩展的应用框架,高度体现了软件的可复用性。STL概述  STL在C++程序设计中的作用是提供一个可供函...

2019-06-01 17:14:57 517

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除