自定义博客皮肤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)
  • 收藏
  • 关注

原创 cocos

暂定,还没想好写啥

2021-11-25 11:06:10 88

转载 八大排序算法时间空间复杂度分析

作者:番茄焖鸡蛋链接:https://www.nowcoder.com/discuss/200097?type=1来源:牛客网1、冒泡排序不管序列是怎样,都是要比较n(n-1)/2 次的,最好、最坏、平均时间复杂度都为O(n²),需要一个临时变量用来交换数组内数据位置,所以空间复杂度为O(1)。有很多人说冒泡排序的最优的时间复杂度为O(n),其实这是在代码中使用一个标志位来判断是否已经排...

2019-09-04 22:04:51 2737

原创 BST树——前序、中序、后序的递归和非递归遍历遍历

递归前序遍历void PreOrder(BtNode *p){ if(p != NULL) { cout<<p->data<<" "; PreOrder(p->leftchild); PreOrder(p->rightchild); }}中序遍历void InOrder(BtNode *p){ if(p != ...

2019-09-04 22:04:39 433

原创 剑指offer——数组中重复的数字

题目描述在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。分析遍历数组,如果数组的值与下标不对应,那么numbers[i] 的值作为下标,找到当前数组的下标为numbers...

2019-08-14 20:37:56 109

原创 八大排序——希尔、归并、快速排序

希尔排序//希尔排序void insertSort(int *arr, int len,int level){ assert(NULL != arr); static int b = 0; for (int i = level; i < len; i+=level) { int j = i; int tmp = arr[i]; for (; j > 0...

2019-08-14 11:43:26 132

原创 剑指offer——翻转单词顺序列

题目描述牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?分析1)想到翻转...

2019-08-14 11:35:05 103

原创 剑指offer——二叉树的下一个结点

题目:给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。分析:struct TreeLinkNode { int val; struct TreeLinkNode *left; struct TreeLinkNode *right; struct TreeLinkNod...

2019-08-13 20:36:37 91

原创 剑指offer——把二叉树打印成多行(二叉树的层次遍历)

题目:从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。利用队列的特性,先进先出,li用队列的元素个数控制每次循环的次数 vector<vector<int> > Print(TreeNode* pRoot) { vector<vector<int>> arr; if(pRoot == NULL...

2019-08-13 16:55:15 76

原创 剑指offer——字符串的排列

输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。全排列,采用递归的思想1)固定一端不动,求剩下的字符串的全排列,不断递归,2)递归的终止条件是当m=k时表明已经是单个的字符全排列,而单个的字符全排列就是自身,此时递归终止3)第一次交换是保证自身被插入到tmp...

2019-08-12 19:58:26 83

原创 八大排序——冒泡,选择,插入排序

1、冒泡排序void blueSort(int *arr, int len)//时间复杂度 O(n^2) 空间复杂度O(1) 稳定{ assert(NULL != arr); bool flage = true; for (int i = 0; i < len && flage; i++) { flage = false; for (int ...

2019-08-11 17:11:56 116

原创 进程

进程定义进程是任何多道程序设计的操作系统中的基本概念。进程通常被定义为程序执行时的一个实例。例如,如果16个用户同时运行vi,那么,就有16个独立的进程(尽管它们执行同一个可执行的代码)。在Linux源代码中,进程常被称为“任务”。简单来说进程是什么?进程就是一个程序运行起来的过程。进程的状态通常由进程描述符(PCB)标识,一个PCB对应一个进程实体,一个PCB对应一个PID。如图...

2019-08-11 10:55:12 117

原创 设计模式——单例模式

单例模式:一个类只能实例化一个对象实现机制: 1.构造函数私有化 2.提供接口生成唯一对象 3.静态指针类外初始化分类: 1、懒汉模式 (贪婪加载):线程不安全 只有在调用getInstance这个函数时这个类对象才会被实例化class SingleTon{public: static SingleTon* getIn...

2019-08-11 10:42:53 93

原创 剑指offer——两个链表的第一个公共节点

输入两个链表,找出它们的第一个公共结点。思路:利用栈 相当于Y型链表4 5结点的地址是相同的所以,3的next和0的next相同首先利用栈将两个链表的节点压入栈,然后分别pop栈,直到如果栈顶元素不相同,及当stack1= 3的节点时,stack2=0时的节点,此刻我们返回栈顶元素的下一个,就是链表的第一个公共点节点地址。如果没有if(pHead1 == p...

2019-08-04 15:56:48 105

原创 用户态切内核态的过程

当程序执行到系统调用函数时,由于系统调用的函数的实现在内核中,所以系统会从用户态转到内核态。这个过程有这几步:1、程序触发0X80中断2、系统会保存程序的上下文(PCB)3、将系统调用号保存到eax寄存器(每个系统调用函数有一个系统调用号)open函数为例 用户态-------》内核态当程序执行到系统调用函数时,触发0X80中断,系统将程序的执行信息保存到...

2019-08-01 19:59:46 862

原创 多态

多态一般分为静多态,动多态和宏多态静多态:在编译时刻确定函数地址(重载,模板)动多态:在运行时刻确定函数的地址虚函数:简单地说,那些被virtual关键字修饰的成员函数,就是虚函数。有了虚函数才能实现动多态。那些能成为虚函数? 1.能取地址 2.依赖对象调用所以普通的类成员方法、析构(特殊)函数能成为虚函数普通全局函数、静态的类成员方法、内联函数、构...

2019-07-31 19:27:12 119

原创 剑指offer——树的子结构

输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val;...

2019-07-30 19:23:42 87

原创 malloc/free与new/delete的区别

(1)malloc/free是C++/C语言的标准库函数,new/delete是C++的运算符(2)malloc的返回值是void*需要我们自行转换,new操作符内存分配成功时,返回的是对象类型的指针,类型严格与对象匹配无须进行类型转换,故new是符合类型安全性的操作符。(3)new调动operator new函数进行分配空间,调用构造函数,delete调用析构函数,然后调用operato...

2019-07-30 16:11:11 153

原创 struct和类的区别

1、 C的struct与C++的class的区别(1)C中的struct只是一种数据类型,不能用来定义函数,C++中的class可以(2)C中的空struct大小为0,但是在C++中空struct和空class都有一个字节,占位符.c中我的编译器居然都不通过,但是C语言中空结构体是0字节.cpp2、C++中的struct和class的区别默认的继承权限struc...

2019-07-30 15:37:42 966

原创 虚函数指针的位置

class Test{public: int a; int b; virtual void fun() {} Test(int temp1 = 0, int temp2 = 0) { a=temp1 ; b=temp2 ; } int getA() { return a; }...

2019-07-29 20:30:42 333

原创 剑指offer——第一个只出现一次的数

在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写)。第一种map表遍历一遍字符串,将所有字母放入map表中,第二遍循环,找出第一个只出现一次的字符int FirstNotRepeatingChar(string str) { if ( str.length()...

2019-07-28 11:25:35 117

原创 剑指offer——包含min函数的栈

定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。刚开始我想着用一个变量来保存这个栈的最小值,但是如果这个值被出栈了,那么我的第二小的值怎么得出来?但是这个特性很符合栈的特性,那么我们就要借用一个辅助栈来保存第二小,第三小第四小的值。当入的1,2 此刻辅助栈中只有1,没有2,2出栈后1还是最小的值(有点相岔,原先的栈也还是栈不能先出1,必...

2019-07-27 19:22:51 96

原创 写时拷贝

写时拷贝是指当多个变量指向同一块空间时,当其中的一个变量要对其修改时,将会发生复制情况,内存先分配空间给变量,然后将数据拷贝到新的内存上,将想要修改的变量指向这块新的内存,再对其修改。C++具体实现:s1和s2 同时指向这块内存,此时这块内存的计数器为2表示,当前有两个变量同时指向同一块内存空间当执行s[2]="w"时则原来的内存计数器-1;s2指向新的内存空间,同时将新的内存空间...

2019-07-27 18:38:54 198

原创 剑指offer——重建二叉树

题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。采用递归的思想前序遍历序列{1,2,4,7,3,5,6,8} 前序遍历是根左右的遍历方式,所以可以得知1是整个树的根中序遍历序列{4,7,2,1,...

2019-07-25 21:18:55 74

原创 MYSQL——存储引擎

参考《深入浅出MySQL》对于MySQL来说,它提供了很多种类型的存储引擎,我们可以根据对数据处理的需求,选择不同的存储引擎,从而最大限度的利用MySQL强大的功能。存储引擎的建立基于表,而不是库。一、MyISAMMyISAM 是mysql的默认存储引擎,MyISAM 不支持事务、也不支持外键,支持全文索引,其优势是访问的速度快,对事务完整性没有要求。特点:IO效率低,匹...

2019-07-23 19:21:23 104

原创 剑指offer——栈的压入、弹出序列

输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)思路:借用一个辅助栈,pushV[i]数据与popV[j]数据不相等时,将pushV[i]...

2019-07-23 15:41:02 71

原创 剑指offer——两个链表的合并

我怕是要丸,链表合并不会写了!!!!!!!!!!!!!题目:输入两个单调递增的链表,输出两个链表合成后的链表,合成后的链表满足单调递增。首先递归方法struct ListNode { int val; struct ListNode *next;};ListNode* ReverseList(ListNode* pHead) { if(pHead == NU...

2019-07-22 20:17:29 81

原创 Linux文件操作函数

写项目的时候,当我把实现Linux的基本功能的代码写完之后,写断点续传时,有点难度(我对lseek学的不好)。send这个函数是不能传整形值的只能传字符类型1、open( int open (const char *filename,int flag,/* int mode */) ) 返回值: 1)-1 出错 2) >=0 返...

2019-07-21 11:39:05 117

原创 string是否以‘\0’结尾

今天刷题,刷着刷着发现了一个问题,我好想对string这个了解不是很深,我之前是把它跟C语言中的char类型总是分不清,所以今天题也不刷了,试着了解它们俩到底有什么区别。在C语言中char是以'\0'结尾的,这作为我们循环字符串时的一个结尾标志,那么string是否也以'\0'结尾呢?首先我尝试打印,%s打印是以'\0'为结尾标志的而进行打印的,为什么会乱码???printf只能输...

2019-07-20 10:38:34 1017

原创 break continue return goto的区别

goto goto语句也称为无条转移语句,其一般格式如下: goto 语句标号:其中语句标号是按标识符规定书写的符号#include<stdio.h>int main(){ int n=0; if(n==0) goto prti; n++; prti:printf("这是goto输出的语句\n"); printf("hello worl...

2019-01-06 18:08:24 275

原创 define与typedef的区别

define是宏,它只是字符替换,而typedef定义了之后则是代了一种变量类型1)#define INT intINT a,b;//a与b都是int型typedef int INT;//INT 定义为int型,INT现在为一种变量类型INT a,b;//a与b 都是int型#define PINT int *PINT a,b;//这时a与b就不都是int型指针了,de...

2018-09-21 19:37:06 108

原创 C中的const和C++中的const

左值:放在赋值符号"="的左边.即写权限1、限定写权限,将变量变成只读const int a=10; int const a=10;两个定义方法都可以均表示a是一个常变量不可修改。2、基本数据类型对于const透明(int const *p=&a)==(const int *p=&a)3、const修饰它的直接右边,使其只读const int *p=&a...

2018-06-12 20:22:28 142

原创 指针加法

int arr[10]={1,2,3};int *p = arr;*p=10;p++;*p=20;(假设a的地址如下图)那么现在问题来了,p++之后指向的是arr数组中那个元素呢?(arr数组int型则一个元素占四个字节我们称为一个格子)假设有三种符合p++1、加一个字节 2、加一个格子 3、加一整个数组10...

2018-06-12 19:24:12 840

原创 两个数的交换——指针

int main(){ int a = 10; int b = 20; printf("%d,%d\n",a,b); Swap(&a,&b); printf("%d,%d\n",a,b); return 0;}void Swap1(int a,int b){ int tmp = a; a = b; b...

2018-05-26 15:58:40 1970

原创 进制问题

例一:如果某系统15*4=112成立,则系统采用的是()进制A 6 B 7 C 8 D 9解一:A:逢6进1 15+15=34 34+34=112 选AB:逢7进1 15+15=33 33+33=66 X解二:(1*n^1+5*n^0)*(4*n...

2018-05-24 21:39:59 614

原创 简单的指针介绍

指针:指针是一个用来指示一个内存地址的计算机语言的变量或中央处理器中的寄存器,简单来说指针 ==‘地址’。指针中有一个符号:*间接访问符,简称解引用。作为一个指针与字符变量没有多大差别1)指针类型:字符变量有类型,指针也有类型比如:int *p;//整形指针存放整型值double *p;//浮点指针存放浮点值2)指针的值:字符变量有值,指针也有值,不过...

2018-05-23 21:58:26 337

原创 数字的逆序、顺序与计数

#include <stdio.h>#include<math.h>int Num(int n)//计数{int count=0;if(n==0){return 1;}while(n!=0){n /=10;count++;}return count;}void Inver_order(int n)//逆序函...

2018-05-18 23:37:17 652

原创 浮点数与“0”的比较

浮点数存在误差问题,所以我们不能直接用浮点数与“0”进行比较,直接进行比较是不正确的。例如我们有一个浮点数a=0.01,这个数我们输出时设置保留一位小数,那么a打印出来会变成0.0。再下来我们用这个打印出来的值与"0"比较,我们是不是会认为0.0与0是相等的,但其实这个数原来是a=0.01,a与0是不相等的。在假设有一个浮点数a=-0.01,打印时设置保留一位小数,打印出来会变成0...

2018-05-05 15:12:39 7553

空空如也

空空如也

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

TA关注的人

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