自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 算法基础修炼指南(更新中...)

第一章 枚举完美立方生理周期称硬币熄灯问题(1)熄灯问题(2)第二章 递归(上)求阶乘汉诺塔N皇后逆波兰表达式求值第三章 递归(下)表达式求值上台阶放苹果算24第四章 二分算法程序或算法的时间复杂度二分查找的原理和实现二分法求方程的根例题1 找 一对数例题2 农夫和奶牛第五章 分治归并排序快速排序输出前m大的数求排列的逆序数...

2019-02-14 21:55:57 551 1

原创 16-寻找指定和的整数对

1、问题描述例题:寻找指定和的整数对输入 n ( n<= 100,000)个整数,找出其中的两个数,它们之和等于整数 m (假定肯定有解)。题中所有整数都能用 int 表示2、问题分析首先想到最简单的用两重循环,枚举所有的取数方法,复杂度是O(n2)的。for(int i = 0;i < n-1; ++i) for(int j = i + 1; j < n; ++j)...

2019-02-26 23:44:56 1352

原创 15-二分法求方程的根

二分查找的思想就是每次将区间变成原来的一半,不断的将区间缩小,来逼近最后的值。现在来看一个利用二分查找来求解方程的根的问题。1、问题描述求下面方程的一个根:f(x) = x3-5x2+10x-80 = 0若求出的根是a,则要求|f(a)| <= 10-62、问题分析解法:对f(x)求导,得f’(x)=3x2-10x+10。由一元二次方程求根公式知方程f’(x)= 0 无解,因此f’...

2019-02-24 21:44:43 578

原创 14-二分查找的原理和实现

举个例子,A 心里想一个1-1000之间的数,让 B 来猜,B 可以问问题,A 只能回答是或否。怎么猜才能问的问题次数最少?最笨的方法就是从1开始问,是1吗?是2吗?…是999吗?如果是1,问一次就得到答案了,如果A想的是1000,需要1000次才能得到答案,平均要问500次。还有一种问法,从中间开始问,一次将范围缩小一半。大于500吗?回答是,大于750吗?回答否,大于625吗? …每次缩小...

2019-02-21 15:09:17 520

原创 13-程序或算法的时间复杂度

1、概念这里的时间复杂度是指一个程序或算法的时间效率,也称“时间复杂度”,简称“复杂度”。一般用大的字母 O 和小写字母 n 来表示,比如 O(n),O(n2 ) 等。这里的 n 代表问题的规模,就是要处理的数据量。时间复杂度是用算法运行过程中,某种时间固定的操作需要被执行的次数和 n 的关系来度量的。比如在无序数列中查找某个数,与数的数量成正比,复杂度是 O(n)。计算复杂度的时候,只统计执...

2019-02-21 11:38:40 468

原创 12-算24

对于递归的最后一个问题,我们来看一下稍微复杂点的问题,这里的思想仍然是将问题分解为规模更小的子问题。1、问题描述例题:算24给出4个小于10个正整数,你可以使用加减乘除4种运算以及括号把这4个数连接起来得到一个表达式。现在的问题是,是否存在一种方式使得得到的表达式的结果等于24。这里加减乘除以及括号的运算结果和运算的优先级跟我们平常的定义一致(这里的除法定义是实数除法)。比如,对于5,5,5...

2019-02-19 23:36:28 615

原创 11-放苹果

再看一下用递归将问题分解为规模更小的子问题进行求解的例子。1、问题描述把 M 个同样的苹果放在 N 个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?5,1,1和1,5,1 是同一种分法。输入:第一行是测试数据的数目 t(0 <= t <= 20)。以下每行均包含二个整数 M 和 N,以空格分开。1<=M,N<=10。输出:对输入的每组数据 M 和 ...

2019-02-19 21:09:37 264

原创 priority_queue的用法

priority_queue本质是一个堆。头文件:#include<queue>2. 关于priority_queue中元素的比较函数原型:priority_queue<Type, Container, Functional>其中Type 为数据类型,Container为保存数据的容器,Functional 为元素比较方式。Container必须是

2019-02-18 15:01:55 542

原创 9-四则运算表达式求值

用递归解决递归形式的问题1、问题描述例题: 四则运算表达式求值输入为四则运算表达式,仅由整数、+、-、*、/ 、(、)组成,没有空格,要求求其值。假设运算符结果都是整数。"/"结果也是整数。2、问题分析...

2019-02-17 22:58:07 649

原创 10-爬楼梯

用递归将问题分解为规模更小的子问题进行求解,用爬楼梯(也叫青蛙跳台阶)这个问题分析一下如何将问题规模变小,用递归求解,问题虽然很简单,但是很具有代表性。1、问题描述树老师爬楼梯,他可以每次走1级或者2级, 输入楼梯的级数,求一共有多少种走法。例如:楼梯一共有3级,他可以每次都走一级;或者第一次走一级,第二次走两级;也可以第一次走两级,第二次走一级,一共3种方法。输入输入包含若干行,每行包含...

2019-02-16 11:14:39 320

原创 8-逆波兰表达式

前面讲解了用递归替代多重循环的问题,N皇后问题,用递归将问题分解为规模更小的子问题进行求解,汉诺塔问题,现在来讲解一个递归的第三个作用,解决本来就是用递归形式定义的问题。仍然使用例子来说明。1、问题描述例题:逆波兰表达式逆波兰表达式是一种把运算符前置的算术表达式(其实一般教科书上称这种表达式为波兰表达式),例如普通的表达式2 + 3的逆波兰表示法为+ 2 3。逆波兰表达式的优点是运算符之间不...

2019-02-15 23:49:35 347

原创 7-N皇后问题

上个例子(汉诺塔问题),我们讲解了利用递归其中一个作用,将一个问题分解成规模更小的子问题进行求解。现在用N皇后问题开说明一下递归的另一个作用:用递归代替多重循环。1、问题描述n皇后问题:输入整数 n,要求 n 个国际象棋的皇后,摆在 n*n 的棋盘上,互相不能攻击,输出全部方案。输出结果里的每一行都代表种摆法。行里的第 i 个数字如果是 n,就代表第 i 行的皇后应该放在第 n 列。皇后的...

2019-02-15 17:22:49 2294

原创 6-汉诺塔问题 (Hanoi)

汉诺塔问题(Hanoi)是一个典型的将问题分解为规模更小的子问题进行求解的案例。1、题目描述古代有一个梵塔,塔内有三个座A、B、C,A座上有64个盘子,盘子大小不等,大的在下,小的在上(如图)。有一个和尚想把这64个盘子从A座移到C座,但每次只能允许移动一个盘子,并且在移动过程中,3个座上的盘子始终保持大盘在下,小盘在上。在移动过程中可以利用B座,要求输出移动的步骤。2、解题分析把这...

2019-02-14 23:09:27 2364

原创 5-求阶乘

现在进入递归的学习了,递归非常重要,使用的非常多。1、递归的基本概念一个函数调用其自身,就是递归。下面通过一个简单的例子来说明递归的过程。例子:求n!的递归函数n阶乘可以分解为n乘以n-1的阶乘问题,将问题分解为规模更小的子问题进行求解,用递归实现如下:int Factorial(int n){ if (n == 0) return 1; else return n * F...

2019-02-14 21:37:51 3432

原创 4-熄灯问题

总结用二进制数进行枚举位运算的使用

2019-02-13 10:37:12 1518 1

原创 3-称硬币

class Solution {public: int InversePairs(vector<int> data) { int len=data.size();// vector<int>copy(len,0); vector&

2019-02-10 00:17:00 1720 2

原创 2-生理周期

上一篇中讲解了什么是枚举,并通过一个例子说明了枚举的过程,枚举的确是一个个的尝试答案,但是很多尝试我们就知道它一定不满足要求,所以要尽量减少枚举的次数,这是枚举中的重点。下面通过一个例子来说明减少枚举尝试次数。1、举例说明题目描述:人有体力、情商、智商的高峰日子,它们分别每隔23天、28天和33天出现一次。 对于每个人,我们想知道何时三个高峰落在同一天。给定三个高峰出现的日子p,e 和 i...

2019-02-08 22:37:36 961

原创 数组中的逆序对

题目描述在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007输入描述:题目保证输入的数组中没有的相同的数字数据范围:对于%50的数据,size<=10^4对于%75的数据,size<=10^5对于%100的数据,size&l...

2019-02-07 22:43:51 278

原创 机器人的运动范围

题目描述地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7=18。但是,它不能进入方格(35,38),因为3+5+3+8=19。请问该机器人能够达到多少个格子?思路用一个同样大小的vector初始化为0。判断当...

2019-02-07 21:07:43 2652

原创 矩阵中的路径

题目描述请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则之后不能再次进入这个格子。 例如 a b c e s f c s a d e e 这样的3 X 4 矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abcb"路径,因为字符...

2019-02-07 16:37:01 576

原创 序列化二叉树

题目描述请实现两个函数,分别用来序列化和反序列化二叉树序列化:使用前序遍历,递归的将二叉树的值转化为字符。反序列化:按照前序顺序,递归的使用字符串中的字符创建一个二叉树。...

2019-02-06 21:48:42 241

原创 滑动窗口的最大值

题目描述给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,5...

2019-02-03 23:27:53 246

原创 数据流中的中位数

题目描述如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。方法一用锥来存放元素,将较小的元素存放在大顶锥中,锥顶为最大值;将较大元素存放在小顶锥中,锥顶为最小值。...

2019-02-02 22:47:23 283

原创 二叉搜索树的第k个结点

题目描述给定一棵二叉搜索树,请找出其中的第k小的结点。例如(5,3,7,2,4,6,8)中,按结点数值大小顺序第三小结点的值为4。/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), le...

2019-02-02 17:39:56 242

原创 把二叉树打印成多行

题目描述从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。方法一中序遍历,使用队列,将每一行的元素依次压入队列,每将队列中元素弹出一个就将其左右子节点压入队列。在每一行的开始节点时,队列中元素的个数就是下一行节点的个数,通过计数取出该行所有元素。/*struct TreeNode { int val; struct TreeNode *left; s...

2019-02-01 22:59:41 247

原创 按之字形顺序打印二叉树

题目描述请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。思路解析:用两个栈存储每一行的数据,从左向右顺序用一个栈存储,将栈中元素弹出时,元素的子节点存入从右向左顺序的栈。/*struct TreeNode { int val; struct TreeNode *left; ...

2019-02-01 18:29:57 258

《重构改善既有代码的设计第2版》第1章 重构,第一个示例重构过程

《重构改善既有代码的设计第2版》第1章 重构,第一个示例,演示重构过程,从初识代码到重构结束有git详细记录

2024-03-26

jieba-master.zip

jieba 是目前最好的 Python 中文分词组件,它主要有以下 3 种特性: 支持 3 种分词模式:精确模式、全模式、搜索引擎模式 支持繁体分词 支持自定义词典 安装:先下载,随便解压到一个地方,cmd 进入对应文件夹后运行 python setup.py install

2020-04-02

BCC 5.5.1.7z

一个可以直接运行的 BCC 编译器,为什么要BCC 编译器?因为 C 语言中有些指示字或功能等是编译器相关的,使用多种编译器使我们更好的理解 C 语言,这个文件解压直接直接使用,免安装,也可能第一次双击打开会自动安装一些插件,保证功能完整。

2019-11-25

空空如也

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

TA关注的人

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