自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 24.二叉树中和为某一值的路径

输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; Tree...

2019-05-17 21:59:27 182

原创 23.二叉搜索树的后序遍历序列

输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。class Solution {public: bool VerifySquenceOfBST(vector<int> sequence) { int len=sequence.size();//计算序列长度 ...

2019-05-17 21:33:42 179

原创 22.从上往下打印二叉树

从上往下打印出二叉树的每个节点,同层节点从左至右打印。思路:建一个辅助一个队列,先把根节点入队,每打印一个节点的值时,也就是打印队列头的节点时,都会把它的的左右孩子入队,并且把该节点出队。直到队列为空。/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int ...

2019-05-14 21:59:53 859

原创 21.栈的压入、弹出序列

输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)思路:借助一个辅助栈,将压入顺序压入到辅助栈中,每压入一个元素就和弹出序列的顶部元素进行比较,...

2019-05-14 21:36:32 119

原创 20.包含min函数的栈

定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。思路:可以借用一个临时栈帮助遍历数据并存放数据。栈1始终满足真实栈的规则 但是栈2却保留在使用过程中的最小元素class Solution {public: stack<int>stack1,stack2; void push(int value) { ...

2019-05-11 21:59:35 123

原创 19.顺序打印矩阵

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.class Solution {public: vector<int> printMatrix(vec...

2019-05-11 21:06:43 151

原创 18.二叉树的镜像

操作给定的二叉树,将其变换为源二叉树的镜像。二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5/*struct Tr...

2019-05-11 17:22:33 124

原创 17.树的子结构

输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)用递归来实现,从A树的根节点开始,判断其所有的节点是不是依次和树B相同,如不同,递归调用函数,继续判断树A当前节点的左子树的所有节点或右子树的所有节点是否和树B所有节点相同,直到遍历到父树A的叶子节点,如果不是完全相同,则树B不是树A子树,如果直到遍历到树B的叶子节点,其所有节点在树A中均有,则树B是树A...

2019-04-29 20:50:49 117

原创 16.合并两个排序的链表

输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: ListNode* Merge(...

2019-04-29 20:26:42 244

原创 15.反转链表

输入一个链表,反转链表后,输出新链表的表头。/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: ListNode* ReverseList(ListNode* pHead) {...

2019-04-29 20:25:35 129

原创 14.链表中倒数第k个结点

输入一个链表,输出该链表中倒数第k个结点。思路: 定义两个指针都从头开始,第一个指针先走,第二个指针先不走,当第一个指针和第二个指针错开K位时,第二个指针再和第一个指针一起走,当第一个指针走到结尾时,第二个指针正好走到倒数第K个,注意还要判断链表中有不有大于或等于K个结点。/*struct ListNode { int val; struct ListNode *n...

2019-04-26 22:13:03 127

原创 13.调整数组顺序使奇数位于偶数前面

输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。class Solution {public: void reOrderArray(vector<int> &array) { int begin=0; for(i...

2019-04-26 17:03:00 102

原创 12.数值的整数次方

给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。class Solution {public: double Power(double base, int exponent) { double result=1.0; if(base==0) return 0; ...

2019-04-26 16:16:03 126

原创 11.二级制中1的个数

输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。计算机中数据存储形式位二进制位,正数以原码形式存储,负数以补码形式存储。int类型数据,占4个字节,一个字节8位,所以int类型占32个二进制位。对于负数求二进制位,需要先求出其对应的正数的二进制位。比如:-5对应的正数5的二进制原码为,00000101完整形式为00000000 00000000 00000000 ...

2019-04-26 16:03:06 201

原创 10.矩形覆盖

斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)。...

2019-04-26 11:06:48 133

原创 9.变态跳台阶

一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。1)这里的f(n) 代表的是n个台阶有一次1,2,...n阶的 跳法数。2)n = 1时,只有1种跳法,f(1) = 13) n = 2时,会有两个跳得方式,一次1阶或者2阶,这回归到了问题(1) ,f(2) = f(2-1) + f(2-2)4) n = 3时,会有三种...

2019-04-25 22:02:44 128

原创 8.跳台阶

一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。一阶:1---------------------------------------1二阶:1+1,2---------------------------------2三阶:1+---------------------------------3=2+1四阶:1...

2019-04-25 21:32:18 125

原创 7.斐波那契数列

斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3...

2019-04-25 20:49:00 786

原创 6.旋转数组的最小数字

把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。class Solution {public: int minNumberInRotateArray(vec...

2019-04-19 22:05:56 119

原创 5.用两个栈实现队列

用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型由于队列是先进先出的,而栈是先进后出的,所以要用2个栈来实现队列的入队出队功能,队列的入队功能与栈的一样,出队时,先将第一个栈中的元素全部弹出,并倒入到第二个栈中,将第二个栈中栈顶元素弹出,并将stack2中剩下的元素倒回到stack1中,即实现一次出队class Solution{public: ...

2019-04-18 20:59:09 138

原创 4.重建二叉树+遍历二叉树

输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。/** * Definition for binary tree * struct TreeNode { * int val; * T...

2019-04-17 22:16:18 142

原创 2.替换空格

请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。class Solution {public: void replaceSpace(char *str,int length) { if(str==NULL||length<8) { ...

2019-04-16 20:18:10 118

原创 3.从尾到头打印链表+链表的基本操作

输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。/*** struct ListNode {* int val;* struct ListNode *next;* ListNode(int x) :* val(x), next(NULL) {* }* };*/// 头插思...

2019-04-16 20:11:27 115

原创 1.二维数组的查找

class Solution {public: bool Find(int target, vector<vector<int> > array) { int i = array.size()-1, j = 0; while((i>=0) && (j<array[0].size())) {...

2019-04-07 20:30:17 114

原创 判断闰年——判断2000年到3000年之间的所有的闰年

#include&lt;stdio.h&gt;int LeapYear(int year){ if((year%400==0)||(year%100!=0)&amp;&amp;(year%4==0)) { return 1; } else { return 0; }}void main(){ int year; printf("2000年到3000年之间所有的闰...

2019-01-21 10:13:32 7743

原创 第五章 查找算法——在包含15个数字的数组中查找第7个数字

1.顺序查找#include&lt;stdio.h&gt;#include&lt;stdlib.h&gt;#include&lt;time.h&gt;#define N 15int SearchFun(int a[],int n,int x){ int i,f=-1; for(i=0;i&lt;n;i++) { if(x==a[i]) { f=i; br...

2019-01-19 21:00:00 277

原创 第四章 排序算法——冒泡排序

冒泡排序是所有排序算法中最简单、最基本的一种。冒泡排序的思路就是交换排序,通过相邻数据的比较交换来达到排序的目的。冒泡排序算法在对n个数据进行排序时,无论原数据有无顺序,都需要进行n-1步的中间排序。#include&lt;stdio.h&gt;#include&lt;stdlib.h&gt;#include&lt;time.h&gt;#define SIZE 10void Bubb...

2019-01-19 14:12:33 187

原创 递推算法——兔子产仔问题

#include&lt;stdio.h&gt;int Fibonacci(int n){ int t1,t2; if(n==1||n==2) { return 1; } else { t1=Fibonacci(n-1); t2=Fibonacci(n-2); return t1+t2; } }void main(){ int n,num; print...

2019-01-17 14:54:00 1039

原创 穷举算法——鸡兔同笼问题

#include&lt;stdio.h&gt;int qiongju(int head,int foot,int *chicken,int *rabbit){ int re,i,j; re=0; for(i=0;i&lt;=head;i++) { j=head-i; if(i*2+j*4==foot) { re=1; *chicken=i; *rabbi...

2019-01-16 21:14:58 2478

原创 C/C++ 常用算法手册 第二章 数据结构

一个数据结构的设计过程可以分为抽象层、数据结构层和实现层。其中抽象层是指抽象数据类型层,也就是ADT层,主要讨论数据的逻辑结构及其运算;数据结构层讨论一个数据结构的表示;实现层讨论一个数据结构在计算机内的存储细节以及运算的实现。数据结构的基本概念:(1)数据:数据是信息的载体,能够被计算机识别、存储和加工处理,是计算机程序加工的原材料。(2)数据元素:数据元素是数据的基本单位,也成为元...

2019-01-16 20:48:10 403

原创 C/C++常用算法手册 第一章 算法概述

一个经典算法的5个特征:有穷性、确切性、输入、输出和可行性。常用算法:递推算法、递归算法、穷举算法、贪婪算法、分治算法、动态规划算法和迭代算法等。算法和程序设计语言是不同的,程序设计语言是实现算法的一种形式,也是一种工具。数据结构+算法+程序设计语言=程序。数据结构表示的是处理的对象,算法是计算和处理的核心方法,程序设计语言是算法的实现方式。算法的性能评价:时间复杂度、空间复杂...

2019-01-14 15:08:33 356

原创 C++ primer plus 第16章 string类和标准模板库

template&lt;class Iter&gt;string(Iter begin,Iter end);//构造函数将使用begin和end指向的位置之间的值,对string对象初始化。[begin,end)意味着包含begin,但不包含end在内的区间,end指向被使用的最后一个值后面的一个位置。//假设要用构造函数将对象初始化为另一个string对象(five)的一部分strin...

2019-01-13 20:09:42 243

原创 C++ primer plus 第15章 友元、异常和其他

1.嵌套类嵌套类:将一个类的声明放在另一个类中,它通过提供新的类型类作用域来避免名称混乱。包含类的成员函数可以创建和使用被嵌套类的对象;而仅当声明位于公有部分,才能在包含类的外面使用嵌套类,而且必须使用作用域解析运算符。对类进行嵌套与包含并不同,包含意味着将类对象作为另一个类的成员,而对类进行嵌套不创建类成员,而是定义了一种类型,该类型仅在包含嵌套类声明的类中有效。2.异常(1)异...

2019-01-11 11:13:51 298 1

原创 C++ primer plus 第14章 C++中的代码重用

valarray类是头文件valarray支持的,它支持诸如将数组中所有元素的值相加及在数组中找出最大和最小的值的操作。valarray被定义为一个模板类,以便能够处理不同的数据类型。模板特性意味着声明对象时,必须指定具体的数据类型。使用valarray类来声明一个对象时,需要在标识符valarray后面加上一对尖括号,并在其中包含所需的数据类型:valarray&lt;int&gt; q_...

2019-01-10 21:10:26 238

原创 C++ primer plus 第13章 类继承

面向编程的主要目的之一是提供可重用的代码。C++提供了更高层的重用性,目前,很多厂商提供了类库,类库由类声明和实现构成。因为类组合了数据表示和类方法。因此提供了比函数库更加完整的程序包。类库是以源代码的方式提供的,这意味着可以对其进行修改。而C++提供了比修改代码更好的方法来扩展和修改类——类继承。它能够从已有的类派生出新的类,而派生类继承了原有类(称为基类)的特征,包括方法。下面是可以通过继承完...

2019-01-09 11:05:58 371

原创 C++ primer 第12章 类和动态内存分配

不能在类声明中初始化静态成员变量。因为声明描述了如何分配内存,但并不分配内存。对于静态类成员,可以在类声明之外使用单独的语句来进行初始化,这是因为静态类成员是单独存储的,而不是对象的组成部分。静态数据成员在类声明中声明,在包含类方法的文件中初始化。初始化时使用作用域运算符来指出静态成员所属的类,但如果静态成员是整型或枚举型const,则可以在类声明中初始化。构造函数必须分配足够的内存来存储字符...

2019-01-08 10:49:23 197

原创 C++ primer plus 第11章 使用类

1.添加加法运算符operator+()函数的名称使得可以使用函数表示法或运算符表示法来调用它。total=coding.operator+(fixing);//函数表示法total=coding+fixing;//运算符表示法多数C++运算符都可以用这样的方式重载。重载的运算符不必是成员函数,但必须至少有一个操作数是用户定义的类型。重载运算符的限制:(1)重载后的运算符必须...

2019-01-07 11:12:36 232

原创 C++ primer plus 第十章 对象和类

重要的面向对象编程特性:抽象、封装和数据隐藏、多态、继承和代码的可重用性。为了实现这些特性并将它们组合在一起,C++所做的最重要的改进是提供了类。类是一种将抽象转换为用户定义类型的C++工具,它将数据表示和操纵数据的方法组合成一个整洁的包。类声明:以数据成员的方式描述数据部分,以成员函数(被称为方法)的方式描述公有接口。类定义:描述如何实现类成员函数。通常,C++程序员将接口(类定...

2019-01-05 21:29:17 316

原创 C++ primer plus 第9章 内存模型和名称空间

C++11中,关键字auto用于自动类型推断,但在C语言和以前的C++版本中,auto的含义截然不同,它用于显式地指出变量Wie自动存储。1.自动变量和栈程序必须在运行时对自动变量进行管理,常用方法:留出一段内存,并将其视为栈,以管理变量的增减。程序使用两个指针来跟踪栈,一个指针指向栈底——栈的开始位置,另一个指针指向堆顶——下一个可用内存单元。函数被调用时,其自动变量将被加入到栈中,栈顶...

2019-01-04 17:04:28 177

原创 C++ Primer Plus 第8章 函数探幽

1.C++内联函数 内联函数是C++为提高程序运行速度所做的一项改进。常规函数和内联函数之间的主要区别不在于编写方式,而在于C++编译器如何将他们组合到程序中。(编译过程的最终产品是可执行程序------由一组机器语言指令组成),如果代码执行时间短,则内联调用就可以节省非内敛调用使用的大部分时间。使用内联函数时:(1)在函数声明前加上关键字inline;(2)在函数定义前加上关键字inline...

2019-01-04 10:06:07 322

空空如也

空空如也

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

TA关注的人

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