自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(54)
  • 资源 (2)
  • 收藏
  • 关注

原创 3 无重复字符的最长

给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所...

2019-11-27 20:49:56 132

原创 2 两数相加

给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> ...

2019-11-27 20:48:11 239

原创 1两数之和

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

2019-11-27 20:35:40 137

原创 2 构造/析构/赋值运算

几乎每一个class都会有一或多个构造函数、一个析构函数、一个copy assignment操作符。本章提供的引导可让你把这些函数良好地集结在一起,形成classes的脊柱。条款 05: 了解C++默默编写并调用哪些函数  什么时候empty class(空类()不再是个empty class呢?当C++处理过之后。是的,如果你自己没声明,编译器就会为它声明(编译器版本)一个copy构

2018-01-13 18:06:08 273

转载 1 让自己习惯C++

条款 01:视C++为一个语言联邦  今天的C++已经是一个多重范型编程语言,一个同时支持过程形式(procedural)、面向对象形式(object-oriented)、函数形式(functional)、泛型形式(generic)、元编程形式(metaprogramming)的语言。   为了理解C++,你必须人认识其主要的次语言,幸运的是总共只有四个:   C:说到底C++仍是以C为基

2017-11-24 12:33:18 229

原创 0 导读

本书的最佳用途就是彻底了解C++如何行为、为什么那样行为,以及如何运用行为形成优势。盲目应用书中条款是非常不合适的。如果没有好理由,你或许不该违反任何一个条款。    术语   所谓声明式(declaration)是告诉编译器某个东西的名称和类型(type),但略去细节。   每个函数的声明揭示其签名式(signature),也就是参数和返回类型。一个函数的签名等同于该函数的类型。

2017-11-01 21:56:49 260

原创 第 7 章 类

类的实现包括类的数据成员,负责接口实现的函数体以及定义类所需的各种私有函数。   7.1 定义抽象数据类型  成员函数的声明必须在类的内部,它的定义既可以在类的内部也可以在类的外部。   作为接口组成部分的非成员函数,定义和声明都可以在类的外部。   注意:定义在类内部的函数是隐式inline函数。 引入this   在成员函数内部可直接使用该函数的对象成员,而无须通过成员访

2017-09-07 17:27:30 445

原创 指针常量和常量指针

(指针)和 const(常量) 谁在前先读谁 ;*象征着地址,const象征着内容;谁在前面谁就不允许改变。int a =3; int b = 1; int c = 2; int const *p1 = &b;//const 在前,定义为常量指针 int *const p2 = &c;//*在前,定义为指针常量 常量指针p1:指向的地址可以变,但内容不可以重新赋值,内容的改变只能

2017-08-31 09:30:55 206

原创 0-1 背包问题——动态规划

0-1背包问题:  有N件商品和一个容量为V的背包。第 i 件商品的容量为c[i],价值时w[i]。求解将那些物品装入背包可使这些物品的费用总和不超过背包容量, 其价值总和最大。  问题特点:每种物品只有一件,可以选择放或者不放。 算法基本思想   利用动态规划,子问题为:f[i][v]表示前 i 件物品恰恰放入一个(剩余容量)容量为 v 的背包可以获得的最大价值。   其状态转移方程为:

2017-08-29 21:58:53 389

原创 第 16 章 贪心算法

对于许多最优化问题,使用动态规划算法来求最优解有些杀鸡用牛刀了,可以使用更简单、更高效的贪心算法。它在每一步都做出当时看起来最佳的选择。也就是说,它总是做出局部最优的选择,寄希望这样的选择能导致全局最优解。   贪心算法并不保证得到最优解,但对很多问题确实可以求得最优解。活动选择问题就是可以用贪心算法得到最优解。  16.1 活动选择问题  假定有一个 n 个活动的集合S={a1,a2,...,

2017-08-29 16:23:27 419

原创 第 四 部分 高级设计分析技术 第15章 动态规划

这一部分介绍了设计和分析高效算法的三种重要技术:动态规划、贪心算法、和摊还分析。   动态规划通常用来解决最优化问题,在这类问题中,通过做出一组选择来达到最优解。在做出每个选择的同时,通常会生成与原问题形式相同的子问题。当多于一个选择子集都生成相同的子问题时,动态规划技术通常通常就会有效,其关键技术就是对每个这样的子问题都保存其解,当其重复出现时即可避免重复求解。   与动态规划类似,贪心算法通

2017-08-28 22:55:05 568

原创 第 9 章 排序

排序:   假设含有n个记录的序列为{r1,r2,......,rnr_1,r_2, ... ... , r_n},其相对应的关键字分别为{k1,k2,......,knk_1, k_2, ......,k_n},需确定1,2,……,n的一种排列p1,p2,......,pnp_1,p_2,......,p_n,使其相对应的关键字满足kp1<=kp2<=......<=kpnk_{p1} <= k

2017-08-24 18:03:19 258

原创 第 8 章 查找

查找:就是根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素(或记录)。8.1 开场白8.2 查找概论  查找表:是由同一类型的数据元素(或记录)构成的集合。   关键字:是数据元素中某个数据项的值,又称为键值,用它可以标识一个数据元素。   若此关键字可以唯一标识一个记录,则称此关键字为主关键字。   对于那些可以识别多个数据元素(或记录)的关键字,称之为次关键字。

2017-08-22 17:28:18 1056

原创 第 7 章 图

7.1 开场白7.2 图的定义图(Graph)是有顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G(V,E),其中,G表示一个图,V 是图G中顶点的集合,E是图G中边的集合。 注:在定义中,若V是顶点的集合,则强调了顶点集合V有穷非空。 在图中,任意两个顶点之间都可能有关系,顶点之间的逻辑关系用变来表示,边集可以是空的。7.2.1 各种图定义  无向边:若顶点viv_i到

2017-07-27 21:27:44 436

原创 第 6 章 树

树(Tree)是 n(n>=0)个结点的有限集。n=0时,称为空树。在任意一颗非空数中: (1)有且仅有一个特定的称为根的结点; (2)当n>1时,其余结点可分为m(m>0)个互不相交有限集T1、T2、...、TmT_1、T2、... 、T_m,其中每一个集合本身又是一棵树,并且称为根的子树(SubTree)。6.1 开场白6.2 树的定义树(Tree)是 n(n>=0)个结点的有限集。n=0时

2017-07-17 10:34:54 423

原创 第5 章 串

串是有零个或多个字符组成的有限序列,又名字符串。5.1 开场白枯眼望遥山隔水,往来曾见几心知?壶空怕酌一杯酒,笔下难成和韵诗。途路阻人离别久,讯音无雁寄回迟。孤灯夜守长廖寂,夫忆妻兮父忆儿。5.2 串的定义串是有零个或多个字符组成的有限序列,又名字符串。 一般记为 s = “a1a2……an”。串中的字符数目n称为串的长度。零个字符的串称为空串。5.3 串的比较  串的比较是通过组成串的字符之间的

2017-07-13 10:01:43 360

原创 第 4 章 栈与队列

栈是限定仅在表尾进行插入插入和删除操作的线性表; 队列是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。4.1 开场白4.2 栈的定义4.2.1 栈的定义栈是限定仅在表尾进行插入插入和删除操作的线性表。   允许插入和删除的一端称为栈顶(top),另一端称为栈底(button)。不含任何数据元素的栈称为空栈,栈又称为后进先出(Last In First Out)的线性表,简称LIFO结

2017-07-10 16:19:38 348

原创 第 3 章 线性表

零个或多个数据元素的有限序列。3.1 开场白3.2 线性表的定义线性表(list):零个或多个数据元素的有限序列。 在较复杂的线性表中,一个数据元素可以由若干个数据项组成。3.3 线性表的抽象数据类型线性表的抽象数据类型如下:ADT 线性表(List)Data 线性表的数据对象集合为{a1, a2,...,an},每个元素的类型均为DataType。其中,除第一个元素a1外,每个一个元

2017-07-07 22:05:23 449

原创 第 2 章 算法

2.1 开场白2.2 数据结构与算法关系2.3 两种算法的比较2.4 算法定义算法:是解决待定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。2.5 算法的特性2.5.1 输入输出2.5.2 有穷性指算法在执行有限的步骤后,自动结束而不会出现无限循环,并且每一个步骤在可接受的时间内完成。2.5.3 确定性算法的每一步骤都具有确定的含义,不会出现二义性。2.5.4

2017-07-06 15:06:02 255

原创 第 1 章 数据结构绪论

之前看的一直是《算法导论》,的确是一本非常非常好的书,看的也非常吃力,看到第三部分 数据结构部分时,对于书中的伪代码的实现,对我造成了很大的困惑,不知那种实现方式才是最优的,一时看的云里雾里,所以,看完第三部分,暂时不再继续看第四部分 高级设计部分了,决定研读下《大话数据结构》,加深对数据结构的了解,同时形成规范的数据结构的实现编程。1.1 开场白1.2 你数据结构怎么学的1.3 数据结构起源1.4

2017-07-05 10:25:29 423

转载 整数转换成字符串

http://www.cnblogs.com/luxiaoxun/archive/2012/08/03/2621803.html

2017-07-04 22:56:47 350

原创 第 13 章 红黑树

二叉搜索树在树的高度较高时,动态集合的操作可能并不比在链表上执行的快。红黑树是许多“平衡”搜索树的一种,可以保证在最坏情况下基本动态集合操作的时间复杂度为O(lgn)。   13.1 红黑树的性质  红黑树是一颗二叉搜索树,它在每个结点上增加了一个存储位来表示结点的颜色,可以是RED或BLACK。通过对任何一条从根到叶子的简单路径上各个结点的颜色进行约束,红黑树确保没有一条路径会比其他路径长出 2

2017-06-30 11:01:35 211

原创 第12 章 二叉搜索树

搜索树结构支持许多动态集合操作,因此,使用一棵搜索树既可以作为一个字典又可以作为一个优先队列。   二叉搜索树的基本操作所花费的时间与这棵树的高度成正比。对于 n 个节点的一个完全二叉树来说,这些操作的最坏运行时间为θ(lgn)。然而,如果这棵树是一条 n 个节点组成的线性链,那么同样的操作就要花费θ(n)的最坏运行时间。   12.1 什么是二叉搜索树  一颗二叉搜索树是以一颗二

2017-06-29 11:19:39 372

原创 第 11 章 散列表

散列表是实现字典操作的一种有效数据结构。尽管在最坏情况下散列表查找一个元素的与链表中的时间相同,达到θ(n)。然而在实际应用中,在一些合理的假设下,在散列表中查找一个元素的平均时间是O(1)。   散列表是普通数组概念的推广。当实际存储的关键字数目比全部的可能关键字总数要小时,采用散列表称为直接数组寻址的一种有效替代,因为散列表使用一个长度与实际存储的关键字数目成比例的数组来存储。在散列表中,不

2017-06-28 14:52:59 334

原创 第三部分 数据结构 第 10 章 基本数据结构

数学中的集合是不变的,而由算法操作的集合却在整个过程中能增大、缩小或发生其他变化,称这样的集合是动态的。   动态集合中的元素   在动态集合的典型实现中,每个元素都由一个对象来表示,如果有一个指向对象的指针,就能对其各个属性进行检查和操作。一些类型的动态集合假定对象中的一个属性为标识关键字。   动态集合上的操作   分为两类:简单返回有关集合信息的查询操作和改变集合的修改操作。下面列出

2017-06-26 15:52:14 173

原创 第 9 章 中位数和顺序统计量

在一个由n个元素组成的集合中,第i个顺序统计量是该集合中第i小的元素。例如,在一个元素集合中,最小值是第 1 个顺序统计量,最大值是第n个顺序统计量(i=n)。用非形式化的描述来说,一个中位数是它所属集合的“中点元素”。当n为奇数时,中位数是唯一的,位与i=(n+1)/2.当n为偶数时,存在两个中位数,分别位与i=n/2和i=n/2+1.因此,如果不考虑n的奇偶性,中位数总是出现在i=⌊(n+1)

2017-06-22 11:58:48 656

原创 第 8 章 线性时间排序

到目前为止,我们已经介绍了几种能在O(nlgn)时间内排序的n个数的算法。归并排序和堆排序达到了最坏情况下的上界;快速排序在平均情况下达到上界。这些算法都有一个性质:在排序的最终结果中,个元素的次序依赖于它们之间的比较。称这些排序算法为比较排序。   8.1节证明对包含n个元素的输入序列来说,任何比较排序在最坏情况下都要经过Ω(nlgn)次比较。因此,归并排序和堆排序是渐近最优的,并且任何已知的

2017-06-22 10:11:05 291

原创 第 7 章 快速排序

对于包含n个数的输入数组来说,快速排序是一种最坏情况时间复杂度为θ(n2)θ(n^2)的排序算法。虽然最快情况时间复杂度很差,但是快速排序通常是实际排序应用中最好的选择,因为它的平均性能非常好:它的期望时间复杂度为θ(nlgn)θ(n\lg n),而且θ(nlgn)θ(n\lg n)中隐含的常数因子非常小。另外它还能够进行原址排序,甚至在虚存环境中也能很好地工作。7.4 快速排序的描述

2017-06-21 10:01:47 298

原创 第二部分 排序和顺序统计量 第 6 章 堆排序

排序算法   插入排序最坏情况下可以再θ(n2)θ(n^2)时间内将 n 个数排好序。但是,由于其内层循环紧凑,对于小规模输入,是一张非常快的原址排序(如果输入数组中仅有常数个元素需要在排序过程中存储在数组之外,则称排序算法是原址的)。归并排序不是原址的。   第 6 章介绍的堆排序,是一种θ(nlgn)θ(n \lg n)时间的原址排序算法。   第 7 章介绍快速排序,也是一种原址排序,

2017-06-20 15:27:47 407

原创 第 5 章 概率分析和随机算法

本章介绍概率分析和随机算法.5.1 雇用问题概率分析   概率分析是在问题分析中应用概率的概念。大多数情况下,我们采用概率分析来分析一个算法的运行时间,有时也用来分析其他的量。我们对所有可能输入产生的运行时间取平均。当报告此种类型的运行时间时,我们称其为平均情况运行时间。   我们在确定输入分布时必须非常小心。对于某些问题,我们可以对所有可能的输入集合做某种假定,然后采用概率分析来设计一个高效算

2017-06-09 11:39:11 449

原创 第 4 章 分治策略

在分治策略中,我们递归地求解一个问题,在每层递归中应用如下三个步骤:   分解:将问题划分为一些子问题,子问题的形式与原问题一样,只是规模更小。   解决递归地求解出子问题。。如果子问题规模足够小,则停止递归,直接求解。   合并 将子问题的解组合成原问题的接。   当子问题足够大,需要递归求解时,我们称之为递归情况。当子问题变得足够小,不再需要递归时,我们说递归已经“触底”,进入了基本情

2017-06-08 20:28:37 540

原创 第 3 章 函数的增长

当输入规模足够大时,使得只有运行时间的增长量级有关时,我们要研究算法的渐近效率。也就是说,我们关心当输入规模无限增加时,在极限中,算法的运行时间如何随着输入规模的变大而增加。通常,渐近地更有效的某个算法对很小的输入外的所有情况将是最好的。   本章给出几种标准方法来简化算法的渐近分析。下一节首先定义几类“渐近记号”,其中,我们已经见过一个例子是Θ记号。然后,我们给出贯穿本书使用的几种记号的约定。

2017-06-07 16:24:43 1020

转载 window7 环境下VS CODE编译调试C++程序配置

http://blog.csdn.net/c_duoduo/article/details/51615381 http://www.jianshu.com/p/d0350f51e87a

2017-06-05 22:12:25 458

原创 第 2 章 算法基础

本章将要介绍一个贯穿本书的框架,后续的算法设计与分析都是在这个框架中进行的。2.1 插入排序输入:n个数的一个序列< a1, a2, … , an >。 输出:输入序列的一个排列< a1’, a2’, … , an’>,满足a1’ <= a2’ <=…<=an’。 我们希望排序的数也称为关键词。 本书中通常将算法描述为用一种伪代码书写的程序。将伪代码过程命名为INSERTION-SORT,其中

2017-06-01 11:19:11 362

原创 第一部分 基础知识

之前一直想看下神书算法导论,由于种种原因一直没有仔细研读,从今天开始,接下来一个一个多月的时间里,争取一天一章内容,认真研读这本书。 第一部分,这一部分将引导读者开始思考算法的设计和分析问题,简单介绍算法的表达方法、将在本书中用到的一些设计策略,以及算法分析中用到的许多基本思想。

2017-06-01 10:11:24 309

原创 第 17 章 MySQL错误代码和消息的使用

当用户以某种主机语言(如java)调用MySQL时,有可能出现操作的错误,用户必须通过MySQL的错误提示来修改错误。本章列出了服务器错误代码和错误消息,以及客户端程序错误代码和错误消息供用户参阅。17.1 MySQL服务器端错误代码和消息MySQL 5.6是根据MySQL安装目录下的share/errmsg.txt文件来生成include/mysqld_error.h和include/mysqld

2017-05-26 17:33:38 424

转载 MySQL索引

http://www.cnblogs.com/hustcat/archive/2009/10/28/1591648.html

2017-05-26 11:01:42 185

原创 第 16 章 MySQL缓存的配置和使用

在MySQL服务器高负载的情况下,必须采取一种措施给服务器减轻压力,减少服务器的IO操作。一般采用的方法是优化SQL操作语句,优化服务器的配置参数,从而提高服务器的性能。MySQL使用了几种内存缓存数据的策略来提高性能。对于使用和管理MySQL的人员来说,了解并掌握MySQL数据库的缓存机制和MySQL是如何利用内存来提升数据高频率的存取性能,是很重要的一个方面。16.1 MySQL的缓存

2017-05-26 10:41:07 279

原创 第 15 章 MySQL分布式应用

对于一个大型数据库应用来讲,设计一个分布式、高可用的架构非常重要。MySQL从5.0.3版本就开始支持分布式事务,通过数据切分、读写分离、数据缓冲、集群等方式可以更好地构建分布式应用。15.1 分布式应用的概念和优势分布式数据库是指利用高速计算机网络将物理上分散的多个数据存储单元连接起来组成一个逻辑上统一的数据库。分布式数据库的基本思想是将原来集中式数据库中的数据分散存储到多个通过网络

2017-05-25 22:25:48 377

原创 第 14 章 MySQL的日志管理

日志是MySQL数据库的重要组成部分,日志文件中记录着MySQL数据库运行期间发生的变化,如:MySQL数据库的客户端连接情况、SQL语句的执行情况和错误信息等。当数据库遭到意外的损坏时,可以通过日志查看文件出错的原因,并且可以通过日志文件进行数据恢复;也可以通过日志文件分析数据、优化查询等。MySQL日志管理机制比较完善,它包含了以下几种常用的日志文件,分别为:错误日志(-log-err)、查询

2017-05-24 20:18:16 364

mingw7.0离线安装包.rar

mingw最新版离线安装包,包括linux版本mingw-w64-v7.0.0.zip和Windows版本X86_64-8.1.0-release-posix-seh-rt_v6_rev0.7z

2020-02-22

linux平台c语言实现贪吃蛇小游戏

编译命令 gcc snake.c -lncurses -lpthread

2017-03-09

空空如也

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

TA关注的人

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