自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Leetcode:有效三角形的个数

给定一个包含非负整数的数组,你的任务是统计其中可以组成三角形三条边的三元组个数。示例 1:输入: [2,2,3,4]输出: 3解释:有效的组合是:2,3,4 (使用第一个 2)2,3,4 (使用第二个 2)2,2,3注意: 数组长度不超过1000。 数组里整数的范围为 [0, 1000]。解法一:暴力法时间复杂度O(N3)O(N3)先排序,然后...

2019-09-18 13:26:09 210

原创 Leecode:小于K的两数之和

Leecode1099号问题:给你一个整数数组 A 和一个整数 K,请在该数组中找出两个元素,使它们的和小于 K 但尽可能地接近 K,返回这两个元素的和。如不存在这样的两个元素,请返回 -1。示例 1:输入:A = [34,23,1,24,75,33,54,8], K = 60输出:58解释:34 和 24 相加得到 58,58 小于 60,满足题意。 1 ...

2019-09-16 22:55:34 238

原创 剑指offer:字符串替换

字符串替换: 1.一个换一个 函数将字符串中的字符'*'移到字符串的前部分,前面的非'*' 字符后移,但不能改变非'*'字符的先后顺序,函数返回串中非'*'字符的数量。(要求尽可能的占用少的时间和辅助空间)。 例如:原始串为au**toc**h**i*ps,处理后为*******autochips,函数返回9. 2.一个换多个(插入)...

2019-08-14 10:54:30 195

原创 数据结构:不带头结点的单链表

不带头结点的单链表:1.不带头结点的单链表操作中,除了初始化,头插,尾插,删除,操作与带头结点的单链表有差别外,其它的操作基本上一样。2.链表指针直接指向了首元节点,因此在首元节点前插入数据元素或者删除首元节点元素都会改变头指针的值。所以这里要引入二级指针。3、存储结构:4、实现:(1)list.h:#pragma once//链表指针直接指向了首元节点,因此在首...

2019-08-06 16:25:19 1542

原创 数据结构:静态链表

1、对于没有指针的编程语言,可以用数组替代指针,来描述链表。让数组的每个元素由data和cur两部分组成,其中cur相当于链表的next指针,这种用数组描述的链表叫做静态链表,这种描述方法叫做游标实现法。我们对数组的第一个和最后一个元素做特殊处理,不存数据。让数组的第一个元素cur存放第一个备用元素(未被占用的元素)下标,而数组的最后一个元素cur存放第一个有值的元素下标,相当于头结点作用。...

2019-08-04 23:28:08 212

原创 数据结构:单链表实现队列

1、队列示意图:2、单链表实现队列的存储结构:3、C语言实现:(1)lqueue.h:#pragma once//利用带头节点的单链表实现队列,队头为第一个数据节点typedef struct Node{ int data; struct Node *next;}Node;//数据节点typedef struct HNode{ str...

2019-08-04 10:36:34 217

原创 数据结构:顺序表实现环形队列

1、队列的定义:队列是一种特殊的线性表,线性表两端都可以进行插入删除,而队列只能在队头删除,队尾插入。插入元素称为入队,删除元素称为出队。2、队列的特点:(1)只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表 (2)进行插入操作的一端称为队尾(入队列) (3)进行删除操作的一端称为队头(出队列) (4)队列具有先进先出(FIFO)的特性3、队列的分类:顺序...

2019-08-04 10:06:48 394

原创 数据结构:链栈

1、链栈:栈的链式存储结构2、基本概念:栈顶:允许插入和删除的一端称为栈顶(top)栈底:栈顶的另外一端称为栈底(bottom)空栈:不含任何元素的栈称为空栈3、链栈的存储结构:4、链栈的实现:(1)入栈:(2)出栈:5、链栈的C语言实现:(1)lstack.h://带头节点链栈,栈顶在第一个数据节点,入栈和出栈都是O(1)#include ...

2019-08-04 09:46:14 244

原创 数据结构:不定长顺序栈

1、栈(stack):又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。特点:栈是允许在同一端进行插入和删除操作的特殊线性表。允许进行插入...

2019-08-04 09:34:15 103

原创 数据结构:单链表的逆置

单链表的逆置分为两种方法:头插法和就地逆置法。(1)头插法:算法思路:依次取原链表中的每一个节点,将其作为第一个节点插入到新链表中,指针用来指向当前节点,p为空时结束。(2)就地逆置法:ListNode* ReverseList(ListNode* pHead){ if (pHead == NULL || pHead->pNext == NULL) { ...

2019-08-03 17:57:09 675

原创 数据结构:一元多项式及其基本运算

1、实现方式:可采用线性表的顺序存储结构,但是当多项式的每个项的指数差别很大时,会浪费很多存储空间。所以采用链式存储方式表示,每一项可以表示成一个结点,结点的结构由存放系数的coef域,存放指数的expn域和指向下一个结点的next指针域组成。2、链表结构:3、一元多项式的加法运算:设La和Lb分别表示两个多项式。Lc表示和多项式。p,q,r分别表示指向单链表的当前项比较指数...

2019-08-03 17:25:16 12201 1

原创 数据结构:双向链表(不循环)

1、双向链表的定义:双向链表也是链表的一种,它每个数据结点中都有两个结点,分别指向其直接前驱和直接后继。所以我们从双向链表的任意一个结点开始都可以很方便的访问其前驱元素和后继元素。2、双向链表的节点结构:3、双向链表的存储结构:双向链表也是采用的链式存储结构,它与单链表的区别就是每个数据结点中多了一个指向前驱元素的指针域 ,它的存储结构如下图:4、当双向链表只有一个节点的时...

2019-08-02 17:56:18 534

原创 数据结构:循环链表

1、循环链表的定义:循环链表是另一种形式的表示线性表的链表。2、循环链表的节点结构:循环链表的结点包括两个部分:数据域和指针域。(1)数据域(data),用于存储该结点的数据元素,数据元素类型由应用问题决定。 (2)指针域(link),用于存放一个指针,该指针指向下一个结点的开始存储地址。循环链表的结点结构示意图:3、循环链表中各节点的链接方式:(1)循环链表与单链表一样,...

2019-08-02 17:37:37 702

原创 数据结构:单链表

1、链式存储结构:在链式存储的过程中,每个元素Node不仅包含元素本身的信息,还包含元素之间的逻辑信息。前驱结点包含后继结点的地址信息(指针域),可以很方便的找到后继结点的位置。2、链表:通过一组任意的存储单元来存储线性表中的数据元素,由一个个结点构成。3、单链表:每个结点除包含数据域外,只设置一个指针域,来指向后继结点,这样构成的链表就是单链表。 单链表是一种链式存取的数据...

2019-07-31 22:17:54 335

原创 数据结构:不定长顺序表

1、定长的顺序表即为不可扩容的线性表,而不定长的顺序表一旦因插入元素而空间不足时,可进行再分配。2、不定长顺序表的结构:是对定长顺序表的一种改进,在初始时开辟内存被利用完后,还要继续插入数据时,这时候据需要扩容。与定长的顺序表的存储结构相比较,不定长的顺序表只增加一个元素listsize(用于记录当前顺序表的总长度),具体结构如下图所示:dseqlist.h://不定长顺序表#...

2019-07-30 22:33:07 171

原创 数据结构:定长顺序表

1、 顺序表是在计算机内存中以数组的形式保存的线性表,是指用一组地址连续的存储单元依次存储数据元素的线性结构。线性表采用顺序存储的方式存储就称之为顺序表。顺序表是将表中的结点依次存放在计算机内存中一组地址连续的存储单元中。其物理地址相邻,逻辑地址也相邻2、顺序表的特点:(1)简单;(2)支持随机访问(下标);(3)查找快;(4)缺点:插入和删除慢(但尾删和尾插为O(1))3、顺序表的存储结...

2019-07-30 22:00:32 230

原创 C语言:单偶魔方阵的实现(不是4的倍数)

单偶魔方阵:就是当n不可以被4整除时的偶阶幻方,即4K+2阶幻方。如(n = 6,10,14,……)的幻方。实现方法:(以10阶幻方为例)。这时,k=2. (1)把魔方阵分为A,B,C,D四个象限,这样每一个象限肯定是奇数阶。用奇数阶象限的填充数字的方法(罗伯法),依次在A象限,D象限,B象限,C象限填数。 (2)在A象限的中间行、中间格开始,按自左向右的方向,标出k格。A象限...

2019-07-27 11:50:54 793 1

原创 C语言:偶数阶魔方阵的实现(四的倍数)

偶阶魔方阵的实现步骤:1.用横线和竖线将n阶方阵划分为m个4*4的小方阵;2.将n*n个数从小到大,从左到右,从上到下依次填入方阵中,遇到4*4小方阵的对角线不填(此位置不填的数不作为下一个位置填入的数)3.将n*n个数从大到小,从左到右,从上到下依次填入方阵中4*4小方阵的对角线上,其他位置不填(此位置不填的数不作为下一个位置填入的数)4.偶阶魔方阵完成。下面进行图解(以8阶...

2019-07-26 22:24:05 1841

原创 C语言:奇数魔方阵的实现

1、奇数阶魔方阵奇阶魔方阵的实现步骤:(1)将“1”放在第一行的中间一列;(2)从“2”开始直到n*n为止的各数依次按下列规则存放:每一个数存放的行比前一个数的行数减一,列数同样加1.(3)如果上一个数的列数为1,则下一个数的行数为n(最后一行)(4)当上一个数的列数为n时,下一个数的列数应为1,行数减1(5)如果按上面规则确定的位置上已有数,或上一个数是第1行第n列时,则...

2019-07-26 22:14:02 404

原创 C语言:strlen strcat strcmp的实现

(1)strlen:原型:extern int strlen(char *s);功能:用来求得字符串s的长度思路:返回s的长度,不包括结束符NULL。实现:(2)strcat:原型:char *strcat (char *strDest, const char *strSrc);其中strDest 是目的字符串,strSrc 是源字符串(不能调用库函数)。功能:将字...

2019-07-24 22:27:58 206

原创 C语言:strcpy的实现

原型:int strcmp ( const char * s1, const char * s2 )功能:比较两个字符串的大小思路:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的 字符或遇’\0’为止。若s1 == s2,返回0;若s1 > s2,返回正数;若s1 < s2,返回负数;实现:(1)把desstr和srcstr当做数组实...

2019-07-24 22:07:03 240

原创 Linux(4):库文件

库文件:预先编译好的方法的集合 Windows系统静态库扩展名为:.lib 动态库扩展名为:.DLL Linux系统静态库扩展名为:.a 动态库扩展名为:.so1、libXX.a:静态库:可执行程序会包含用到的方法(1)特点:程序在链接的过程当中,链接器从库文件找那个取得所需代码,赋值到生成的可执行文...

2019-07-18 22:06:42 87

原创 C++(1):编译链接运行原理

1、编译链接运行原理(1)预编译:a、删除所有的“#define”,并扩展所有的宏定义.b、处理所有的预编译指令,如“#if”,“#endif”,“#ifdef”等.c、处理所有的“#include”预编译指令,并把包含的文件插入到该预编译指令所在的位置中.d、删除所有的注释.e、添加行号和文件名标识,以便于编译器产生调试用的符号信息和编译时出现编译错误或警告时显示行号....

2019-07-17 21:45:15 162

原创 Linux(3):gdb调试

1、编译生成执行文件:(Linux下)gcc -g tst.c -o tst2、使用gdb调试:gdb tst3、单进程、单线程基础调试命令:(1)l:相当于list,从第一行开始例出源码 list filename:num——显示filename文件num行上下的源代码(2)b/break linnum:给指定行添加断点 b/break f...

2019-07-17 11:42:18 97

原创 C语言复习(2)

1、短路表达式1 && 表达式2:当表达式1为假时,整个式子肯定为假,编译器将不会计算表达式2.表达式1 || 表达式2:当表达式1为真时,整个式子肯定为真,编译器将不会计算表达式2.分析:当程序执行带if语句中,先执行++a,此时a的值为1,不能判断1&&(++b)这个表达式的值,所以进行++b,b的值加到1,此时(++a && +...

2019-07-16 17:38:02 124

原创 Linux(2):基础命令

一、文件操作命令:(1)文件:-:普通文件d:目录文件p:管道文件l:链接文件cd:设备文件s:套接字文件(2)命令:touch【基础知识】:新建普通文件mkdir【基础知识】:新建目录文件rmdir【基础知识】:删除空目录cp【基础知识】:拷贝rm【基础知识】:删除普通文件mv【基础知识】:移动/剪切chmod【基础知识】:修改文件权限more【基础知识】:查看...

2019-07-16 15:56:36 221

原创 C语言:指针

1、一个变量的地址称为该变量的“指针”。**指针是一个地址,而指针变量是存放地址的变量。**指针变量只能存放地址。2、定义指针变量:类型名 *指针变量名;int *pointer_1;一个变量的指针的含义包括两个方面,一是以存储单元编号表示的地址,二是它指向的存储单元的数据类型。3、引用指针变量:4、通过指针引用数组5、指向函数的指针6、返回指针值的函数:类型名 * 函数名(参数表...

2019-07-10 15:19:27 1849

原创 算法:红黑树的原理及实现

R-B Tree,全称是Red-Black Tree,又称为“红黑树”,它一种特殊的二叉查找树。红黑树的每个节点上都有存储位表示节点的颜色,可以是红(Red)或黑(Black)。红黑树的特性: (1)每个节点或者是黑色,或者是红色。 (2)根节点是黑色。 (3)每个叶子节点(NIL)是黑色。 [注意:这里叶子节点,是指为空(NIL或NULL)的叶子节点!] (4)如果一个...

2019-07-09 09:12:59 581

原创 C语言:c语言中的关键字

C语言中的关键字一共32个;定义声明最重要的区别:定义创建了对象并为这个对象分配了内存,声明并没有分配内存。1、最宽恒大量的关键字----auto:编译器在默认的缺省情况下,所有变量都是 auto 的。2、最快的关键字---- register:这个关键字请求编译器尽可能的将变量存在 CPU 内部寄存器中而不是通过内存寻址访问以提高效率。 register 变量必须是一个单个的值,并且其长度...

2019-07-03 21:50:15 871

原创 C语言复习(1)

1、把int和long两个类型的字节大小说错,在32位、64位系统下的32位和64位编译器下,数据类型和指针所占内存字节数是多少?答:**32位平台下结果:**sizeof(char)= 1sizeof(short) = 2sizeof(float) = 4sizeof(double) = 8sizeof(int) = 4**sizeof(long) = 4**sizeof(lon...

2019-06-30 22:01:08 145

原创 Linux(1):常见用法

1、放大终端,"ctrl" + "shift" + "+"2、切换目录,cd ~ (切换到个人家目录)3、pwd 查看当前目录4、ls 查看当前目录的文件和子目录 ls -a 显示所有文件,包括隐藏文件5、清屏,clear,或者ctrl+l6、新建文件夹(目录),mkdir 文件夹名(目录名) ,例如 mkdir src7、编辑文件:vi 文件名 i进入编辑模式8、删除文件,...

2018-10-15 17:21:07 5174

原创 C语言:sizeof与strlen的区别

一、sizeof sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。 它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。 由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小。实际上,用sizeof来返回类型以及静态分配的对象、结构或数组所占的空间,...

2018-07-18 13:34:19 130

原创 C语言:给出一个数,求它的位数

/*给一个不多于5位数的正整数,要求:1.求出它是几位数2.分别输出每一位数字3.按逆序输出个位数字,例如原数为321,应该要输出123*/思路:求一个正整数n的位数可以先定义一个变量count,并初始化为0,依次把该整数n除以10,直到其为0为止,并且每除一次10,变量count的个数就自加1,最后count的值就是该整数n的位数。#include <stdio....

2018-07-14 23:47:00 10617

原创 C语言:指针的定义与使用

 指针是变量,但是指针的字节长度是固定的。因为指针保存的是地址,由操作系统的位数决定,32位机的字节是4,64位机的字节是8。&a表示获取a的地址。下面根据一个例子来说明: 定义两个整型变量a和b,*p取a的地址。假设a的地址为1000,b的地...

2018-07-14 22:30:04 987

原创 C语言:指针的加减

1、指针+数字://指针+数字:指针加法需要调整,调整的权重为指针本身去掉一个*号,求sizeof//举例:int *p;p+2的值为p的值加上2*sizeof(int)个字节指针+数字:需要调整,调整的权重为sizeof(指针只去掉一个*)首先,应该知道各个类型所占的字节:char 1 short 2 int 4 long 4 ...

2018-07-11 23:52:46 3694

原创 C语言:数组越界

数组越界的代码如下:int main(){int i;//栈int arr[10];for(i=0;i<=10;i++){arr[i] = 0;printf("%d\n",i);}} 此时整个数组为一个栈,根据先进后出的原则,先进入的元素进入栈底,所以i先入栈,在栈底的位置...

2018-07-11 22:09:31 305

原创 C语言:如何根据给出的等式算出此系统采用的是几进制?

例:假设在n进制下,下面的等式成立,567*456=150216,n的值为?A.9 B.10 C.12 D.18解:由于在n进制下等式成立,则可将n带入,得到左边的式子为(5n^2+6n+7)*(4n^2+5n+6)=20n^4+24n^3+28n^2+25n^3+30n^2+35...

2018-07-11 20:31:20 531

空空如也

空空如也

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

TA关注的人

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