自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【剑指Offer】从上往下打印二叉树-实现

1. 牛客网链接: 我是链接2. 题目描述:从上往下打印出二叉树的每个节点,同层节点从左至右打印。输入:二叉树根节点(可以为空)二叉树节点结构:struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), righ...

2020-04-20 21:10:11 200

原创 【剑指Offer】栈的压入、弹出序列——双指针实现

1.牛客网链接:我是链接2.题目描述:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)输入:栈的压入序列和弹出序列,例如压入序列{1,2...

2020-04-19 12:38:18 218

原创 【剑指Offer】顺时针打印矩阵-实现

1.牛客网链接:我是链接2.题目描述:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下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.输入:vector<vector>结构(或其他结构)保存的二维矩阵,如:...

2020-04-15 19:39:08 152

原创 【剑指Offer】合并俩个排序的链表 - 实现

1.牛客网链接:我是链接2.题目描述:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。输入:俩个单调递增排序的链表输出:保持单调递增合成的链表链表节点结构:struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) ...

2020-04-14 22:51:57 137

原创 【剑指Offer】变态(青蛙)跳台阶代码实现

1.牛客网链接:我是链接2.题目描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。输入:青蛙所跳台阶数n输出:青蛙跳n级台阶所能采用的方法总数3.题目分析:看到这道题的标签是”贪心”,但我并没有使用贪心算法去求解,而还是与“青蛙跳台阶”时一样采取DFS的策略:使用一个stack number_index数据结构来保存当...

2020-04-12 19:51:34 355

原创 【剑指Offer】青蛙跳台阶代码实现

1.牛客网链接:我是链接2.题目描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。输入:台阶数输出:跳上n阶台阶所有的方法总数3.题目分析:(1)题解使用了斐波那契数列的求解方法:F(n)=F(n-1)+F(n-2)在一步可以跳上第n级台阶时有两种情况:a.只差1级台阶,即跳到的台阶数为n-1时,跳到n-...

2020-04-12 18:13:02 891

原创 【剑指Offer】替换字符串

1.牛客链接:我是链接2.题目描述:请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。输入:字符串如“We Are Happy”输出:替换空格字符‘ ’为三字符“%20”后的字符串如“We%20Are%20Happy”3.题目分析:将一个空格字符‘ ’替换为三个字符“%20”需...

2020-04-10 10:47:23 97

原创 【剑指offer】重建二叉树代码实现

1.牛客网链接:我是链接2.题目描述: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。3.题目分析:输入: 二叉树的前序遍历序列和中序遍历序列,如前序:{1,2,4,7,3,5,6,8},中序:{4...

2020-04-10 10:23:44 110

原创 【力扣】完全平方数

题目链接题目描述:给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。示例 1:输入: n = 12输出: 3 解释: 12 = 4 + 4 + 4.示例 2:输入: n = 13输出: 2解释: 13 = 4 + 9.C++实现(BFS):class Solution {...

2020-02-23 20:35:38 208

原创 【力扣】打开转盘锁

题目链接题目描述:你有一个带有四个圆形拨轮的转盘锁。每个拨轮都有10个数字: '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' 。每个拨轮可以自由旋转:例如把 '9' 变为 '0','0' 变为 '9' 。每次旋转都只能旋转一个拨轮的一位数字。1.锁的初始数字为 '0000' ,一个代表四个拨轮的数字的字符串。2.列表 deadend...

2020-02-23 20:10:09 289

原创 【力扣】岛屿数量

题目链接题目描述:给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。输入:二维网格地图,例如[[‘1’,’1’,’1’,'1','0'], ['1','1','0','1','0'], ['1','1','0','0','0'], ...

2020-02-23 19:18:25 298

原创 【力扣】探索队列:设计循环队列

题目链接题目描述:设计你的循环队列实现。 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。循环队列的一个好处是我们可以利用这个队列之前用过的空间。在一个普通队列里,一旦一个队列满了,我们就不能插入下一个元素,即使在队列前面仍有空间。但是使用循环队列,我们能使用这些空间去存储新的值。你的实现应该...

2020-02-01 13:59:23 286

原创 C++复习(9):红黑树与AVL树的比较

红黑树和AVL树都是高效的平衡二叉树,增删改查的时间复杂度都是O(log2N ),红黑树不追求绝对平衡,其只需保证最长路径不超过最短路径的2倍,相对而言,降低了插入和旋转的次数,所以在经常进行增删的结构中性能比AVL树更优,而且红黑树实现比较简单,所以实际运用中红黑树更多。...

2019-09-13 17:19:22 270

原创 C++复习(8):单例模式

**设计模式:**就像打仗时的战法被归结为兵法书一样,代码的设计也可被归类为多种模式。**单例模式:**一个类中只创建一个实例化的对象,并提供一个访问它的全局访问点,该实例被所有程序模块共享。饿汉模式:不管你用不用,程序启动时就创建一个对象。例如: {public:static Singleton* GetInstance() {return &m_instance;...

2019-09-09 12:13:41 97

原创 C++复习(7):new,delete和malloc(),free()的区别

malloc/free和new/delete的共同点是:都是从堆上申请空间,并且需要用户手动释放。不同的地方是:malloc和free是函数,new和delete是操作符malloc申请的空间不会初始化,new可以初始化malloc申请空间时,需要手动计算空间大小并传递,new只需在其后跟上空间的类型即可malloc的返回值为void*, 在使用时必须强转,new不需要,因为new后跟的...

2019-09-09 10:47:33 98

原创 C++复习(6):static修饰的类的静态成员

声明为static的类成员称为类的静态成员,用static修饰的成员变量,称之为静态成员变量;用static修饰的成员函数,称之为静态成员函数。静态的成员变量一定要在类外进行初始化。类的静态成员的特性:(1) 静态成员为所有类对象所共享,不属于某个具体的实例(2)静态成员变量必须在类外定义,定义时不添加static关键字(3)类静态成员即可用类名::静态成员或者对象.静态成员来访...

2019-09-07 20:38:59 281

原创 C++复习(5):类的六个默认成员函数

**构造函数:**构造函数是特殊的成员函数,需要注意的是,构造函数的虽然名称叫构造,但是需要注意的是构造函数的主要任务并不是开空间创建对象,而是初始化对象。构造函数的特性:(1)函数名与类名相同。(2)无返回值。(3)对象实例化时编译器自动调用对应的构造函数。(4)可以重载。无参的构造函数和全缺省的构造函数都称为默认构造函数,并且默认构造函数只能有一个。注意:无参构造函数、全...

2019-09-07 19:41:01 129

原创 C++复习(4):this指针

this指针解决的问题: 类对象的成员函数如何分辨调用它的对象。例如:Date类中有SetDate与Display两个成员函数,函数体中没有关于不同对象的区分,那当s1调用SetDate函数 时,该函数是如何知道应该设置s1对象,而不是设置s2对象呢?C++中通过引入this指针解决该问题,即:C++编译器给每个“成员函数”增加了一个隐藏的指针参数,让该指针指向当前对象(函数运行时调用该...

2019-09-06 21:37:39 187

原创 C++复习(3):类的内存对齐

一个类的大小,实际就是该类中”成员变量”之和,当然也要进行内存对齐,注意空类的大小,空类比较特殊,编译器给了空类一个字节来唯一标识这个类。类的对象只保存成员变量,成员函数存放在公共的代码段。类(class和struct)的内存对齐规则:第一个成员在与结构体偏移量为0的地址处。其他成员变量要对齐到某个数字(对齐数)的整数倍的地址处。注意:对齐数 = 编译器默认的一个对齐数 与 该成员...

2019-09-06 21:14:29 474

原创 C++复习(2):auto关键字

C++11中,标准委员会赋予了auto全新的含义即:auto不再是一个存储类型指示符,而是作为一个新的类型指示符来指示编译器,auto声明的变量必须由编译器在编译时期推导而得。auto用法例如:int a = 10;auto b = a;auto c = 'a';int TestAuto(){return 10; }auto d = TestAuto(); 使用auto定义...

2019-09-06 17:42:11 163

原创 C++复习(1):引用和指针的区别

引用在定义时必须初始化,而指针没有要求。.引用在初始化时引用一个实体后,就不能再引用其他实体,而指针可以在任何时候指向任何一个同类型实体。没有NULL引用,但有NULL指针。在sizeof中含义不同:引用结果为引用类型的大小,但指针始终是地址空间所占字节个数(32位平台下占4个字节)。引用自加即引用的实体增加1,指针自加即指针向后偏移一个类型的大小。有多级指针,但是没有多级引用。...

2019-09-06 16:54:18 115

转载 力扣题目:反转单链表

题目链接:示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?代码///解法一:迭代class Solution {public: ListNode* reverseList(ListNode* he...

2019-08-29 18:06:33 297

原创 力扣题目:删除链表中等于给定值 val 的所有节点

题目链接示例:输入: 1->2->6->3->4->5->6, val = 6输出: 1->2->3->4->5代码:/** Definition for singly-linked list. struct ListNode { int val; ListNode *next; ListNode(int x) ...

2019-08-28 21:17:41 745

原创 数据结构复习(1):顺序表与链表

线性表:线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串…线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。顺序表:顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采...

2019-08-28 20:48:10 155

原创 时间复杂度与空间复杂度简述

算法效率:俩种,一种是时间效率(时间复杂度),一种是空间效率(空间复杂度)。时间复杂度主要衡量的是一个算法的运行速度,而空间复杂度主要衡量一个算法所需要 的额外空间。时间复杂度:算法中的基本操作的执行次数,为算法的时间复杂度。 大O的渐进表示法:1、用常数1取代运行时间中的所有加法常数。2、在修改后的运行次数函数中,只保留最高阶项。3、如果最高阶项存在且不是1,则去除与这个项目相乘...

2019-08-28 18:21:46 133

原创 复习:C语言

C语言复习(1):数据类型:char //字符数据类型short //短整型int //整形long //长整型long long //更长的整形float //单精度浮点数double //双精度浮点数变量:变量的作用域和生命周期(1)作用域作用域(scope),程序设计概念,通常来...

2019-08-26 19:23:41 380

原创 操作符(C语言)

(1)算术操作符:+ - * / %除了%操作符之外,其他的几个操作符可以作用于整数和浮点数。对于/操作符如果两个操作数都为整数,执行整数除法。而只要有浮点数执行的就是浮点数除法。%操作符的两个操作数必须为整数。返回的是整除之后的余数。(2)移位操作符:<< //左移操作符 >> //右移操作符左移操作符 移位规则:左边抛弃、右边补0...

2019-08-04 18:09:08 139

原创 分支语句与循环语句

(1)分支语句[1] ifif(表达式) 语句;if(表达式) 语句1;else 语句2;//多分支 if(表达式1) 语句1;else if(表达式2) 语句2;else 语句3;如果表达式的结果为真,则语句1执行,否则表达式2执行。在C语言中如何表示真假?0表示假,非0表示...

2019-08-04 16:41:46 303

原创 关键字static(C语言)

在C语言中:static是用来修饰变量和函数的1 修饰局部变量2 修饰全局变量3 修饰函数(1)修饰局部变量//代码1#include <stdio.h>void test(){ int i = 0; i++; printf("%d ", i);}int main(){ for(i=0; i<10; i++) {...

2019-08-03 15:05:21 119

转载 使用冒泡排序和回调函数模拟实现qsort函数

qsort函数是一个快速排序函数,在stdlib.h文件中定义,函数原型为viod qsort(void* base, size_t nelem,size_t width,int(*Comp)(const void* ,const void*));*base为要排序的数组名,nelem为要排序数组的长度,width为数组元素的大小(一字节为单位)默认是从小到大排序的,(*Comp)(const...

2018-11-22 23:45:30 183

原创 指针小结

指针小结指针就是地址指针变量是保存地址的变量变量指针其实是变量的地址指针和数组没关系指针的类型应该被分成两部分:type + *一级指针加减1与类型有关,所指向的原地址加减类型对应的字节数;二级及以上指针加减1时,该指针所指向的原地址加减4两相同类型的指针相加减代表两指针之间所指向元素的个数;两指针相加减的前提是指向同一类型或同一存储空间对指针解...

2018-11-21 23:29:32 130

原创 无符号整型数的反转

无符号整形数的反转在编写这道题的程序时,费了老大劲才写出了这样的程序:(小白求轻拍)unsigned char reverse_bit_char(unsigned char y){ int i = 0; unsigned char blank = 0x01; unsigned char num = 0; for (i = 7; i &amp;gt;0; i -= 2) { num = ...

2018-11-05 10:57:37 4277 1

空空如也

空空如也

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

TA关注的人

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