- 博客(30)
- 收藏
- 关注
原创 【GO】剑指offer -- 从尾到头打印链表
非递归:func printListFromTailToHead( head *ListNode ) []int { num:=0 p := head for p!=nil{ num++ p = p.Next } p = head res:=make([]int, num) for i := num-1;i>=0;i--{ res[i] = p.Val p = p.Next
2021-04-21 21:20:47
120
原创 【GO】剑指offer -- 替换空格
func replaceSpace( s string ) string { // write code here res:="" for _, v := range s { if v == ' '{ res+="%20" }else{ res+=string(v) } } return res}
2021-04-21 20:50:17
105
原创 【GO】剑指offer -- 二维数组中的查找
func Find( target int , array [][]int ) bool { if len(array) == 0 || len(array[0]) == 0{ return false } row := len(array) col:=0 i:=0 j:=row-1; for i<row&&j>=col{ if array[i][j]<target{
2021-04-21 20:48:25
133
原创 连续子数组最大和
题目描述输入一个整形数组(可能有正数和负数),求数组中连续子数组(最少有一个元素)的最大和。要求时间复杂度为O(n)。输入描述:第一行为数组的长度N(N>=1) 接下来N行,每行一个数,代表数组的N个元素输出描述:最大和的结果这个题会让有的同学的第一反应不对,例如,有的同学就会认为连续的最大子数组和肯定就是连续的正数之和,遍历整个数组。当遇到正数加给tmp,当遇到了负...
2019-11-26 21:39:13
269
原创 内存空间分配和各种常量与变量
还是要写博客。今天复习了很多东西。做个简要总结。当然说的都是4G运行内存,32位机下。空间分配,高地址到低地址依次为:内核,栈,堆,未被初始化的数据区,初始化的数据区,常量区,代码段。内核,不用讲了。栈:由高地址往低地址生长。函数调用时操作系统会在栈上开辟空间,是连续的一段空间,大约有2M左右。当函数调用结束时,操作系统会收回开辟的那段空间。栈溢出指的是这2M空间都被占用了,当再有函数被调...
2019-09-17 01:34:05
588
原创 线程安全访问之互斥量、死锁和条件变量
今天,我们来说说互斥量和条件变量的API线程安全因为进程中的线程共享了进行的虚拟地址空间,因此,线程间的通信变得更加简单,但是缺点也随之而来。这个缺点是:缺少数据的安全访问控制,容易造成数据混乱。因此,我们必须使用互斥量和条件变量来维持数据的安全访问。我们把能造成数据混乱的情况总结了一个比较经典的模型:它们都是描述了多个线程/进程之间在数据访问时候所应保持的关系。使得不会出现数据混乱和逻辑混...
2019-08-09 15:22:13
276
原创 Leetcode之最大公共前缀(C++)
今天,我们来讲一下字符串的一道面试题:最大公共前缀。题目描述编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。示例 1:输入: ["flower","flow","flight"]输出: "fl"示例 2:输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。解题思路看到这个题的第一反应是...
2019-08-07 16:33:42
499
原创 Leetcode之括号生成(C++)
今天,我们来看一下LeetCode的第22道题:括号生成题目描述给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。例如,给出 n = 3,生成结果为:[ "((()))", "(()())", "(())()", "()(())", "()()()"]思路:首先,我们要明确题目的要求,给出n对括号,生成这n对括号的所有...
2019-08-07 16:13:47
430
原创 数据结构之Vector
今天,我们来模拟实现vector。首先,我们来讲一下vector的特性:1:能够存放各种类型的动态增容的顺序容器2:支持随机访问。也就是说,他的对象创建之后,当插入一个数据时,可以自己动态的开辟空间,不需要程序员手动的开辟。并且这个数据可以是任意类型的。因为vector实现了operator[]这个接口,使得他支持随机访问。vector有三个主要的成员变量,分别是:start:数据起...
2019-06-17 14:26:07
492
原创 C++编程之new的用法以及其代码书写格式
首先第一句,new的作用是开辟空间并初始化,即开辟空间,调用类的构造函数。在C++中,我们都是使用new来申请空间,delete释放空间。C语言中,我们使用的是malloc申请空间,free释放空间。二者的区别我们下面有讲。值得注意的一点是:平日里,我们声明变量所创建空间在栈或者数据段上,这些都不需要程序员手动释放,在结束时(这里的结束指的是例如在函数内部创建的局部变量,在函数调用结束后的结束)...
2019-06-13 17:37:44
1670
原创 C++编程之多态
不管今天讲啥,我们先来说说重载,重写,重定义的区别:重载:函数名相同,参数列表不相同,返回类型可相同可不相同。重写:也叫覆盖,在不同的作用域中(基类和派生类),函数名相同,参数相同,返回值相同(协变除外),基类函数必须含有virtual关键字。重定义:也叫隐藏,在不同的作用域中(基类和派生类),函数名相同,不是重写就是重定义。今天,我们来看一下多态。多态:顾名思义,多种形态。在C...
2019-02-10 22:30:05
180
原创 剑指offer第一题----二维数组的查找
今天我们来聊一下二维数组的查找问题题目描述:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。首先,我们需要在脑海中有一个二维数组的模型,然后在对他进行相关操作。在题目中,我们可以看出二维数组,每一行、每一列,从左到右,从上到下都是依次底层顺序的...
2018-11-16 17:31:29
186
原创 管道
我们先来说说管道时做什么用的? 所谓管道,就是指能够连续一个写进程和一个读进程,并允许它们以生产者-消费者的身份进行通信的一种共享文件,又称为pipe文件。由写进程在管道的写入段(0端)将数据写入管道,而读进程则是在管道的读出端(1端)将数据读出。 管道分为匿名管道和有名管道。在说匿名管道之前,我们先来解决一下管道的一些小的问题。 一、pipe文件的建立 分配磁盘和内存索引结点、为...
2018-05-18 22:39:59
229
原创 继承
面向对象程序设计中最重要的一个概念是继承。继承允许我们依据另一个类来定义一个类,这使得创建和维护一个应用程序变得更容易。这样做,也达到了重用代码功能和提高执行时间的效果。 当创建一个类时,您不需要重新编写新的数据成员和成员函数,只需指定新建的类继承了一个已有的类的成员即可。这个已有的类称为基类,新建的类称为派生类。 继承有三种继承方式:公有继承, 保护继承,私有继承。如下图所示: 一个简...
2018-04-24 15:02:23
142
原创 红黑树-RBTree
先来说说红黑树是什么吧红黑树也是一种二叉搜索树,它给每个节点上存储了一个来表示节点的颜色,可以是BLACK,也可以是RED。通过对任何一个从根节点到叶子节点路径上的颜色的约束来达到一个近似平衡的一棵树。红黑树要求最长路径不超过最短路径的两倍。红黑树满足以下性质: 1、每个节点的颜色不是红色的就是黑色的。 2、根节点的颜色为黑色的。 3、不能有连续的红节点(有父子关系的节点的颜色不...
2018-04-23 20:26:08
353
原创 模拟实现atoi函数
ATOIint atoi(const char* p); 将C字符串转化为基数为10的整数的函数。在第一个非空字符开始转化。参数 需要转换的字符串返回值 转成好的整数,如果转换完超出了int可以的范围,则会返回int表示的最大值。注意事项: 1、字符串为空字符串; 2、p为空; 3、‘+’,‘-’号的选择; 4、返回的值超过了int的范围;代...
2018-04-22 21:39:41
165
原创 动态内存管理
为什么要使用动态内存分配?当你声明数组时,你必须用一个编译时常量指定数组的长度,但是,数据的长度常常在运动时才知道,这是由于它所需要的内存空间取决于输入数据。话说C和C++的动态内存管理有什么区别呢?为什么C语言都有了malloc/free等等,C++还需要new和delete呢? 函数原型: malloc: void* malloc(size_t size); calloc: ...
2018-03-29 23:49:05
254
原创 找出100-200之间的素数
素数是什么呢?素数又称质数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做素数。 下面使用C语言代码实现找出100-200之间的素数:#include<stdio.h>int IsPrime(int a){ int j = 0; for (j = 2; j <= sqrt(a); j++) { if (...
2018-03-27 16:38:46
1956
原创 C++入门基础知识
什么是命名空间?命名空间:实际上就是一个由程序设计者命名的内存区域,程序设计者可以根据需要指定一些有名字的空间域,把一些全局实体分别放在各个命名空间中,从而与其他全局实体分隔开来。 C++基本的输入输出流:cin(>>),输入流。cout(<<),输出流。他们都在namespace的作用域中。重载:在同一个作用域中,如果有多个函数的名字相同,但是...
2018-03-23 22:38:58
181
原创 Linux下的重要目录/proc, /sys, /SElinux, /bin, /usr/lib, /usr/local, /var, /tmp
今天,我们来了解一下关于Linux下的一些重要目录。 /proc:/proc 文件系统是一种内核和内核模块用来向进程 (process) 发送信息的机制 (所以叫做 /proc)。这个伪文件系统让你可以和内核内部数据结构进行交互,获取 有关进程的有用信息,在运行中 (on the fly) 改变设置 (通过改变内核参数)。 与其他文件系统不同,/proc 存在于内存之中而不是硬盘上。 /sys...
2018-03-23 20:19:49
204
原创 关于Linux中的目录的一些权限问题
权限?目录的执行权限:可以获得目录下文件的列表,和进入目录。要对目录下存在的文件进行读取和修改,必须要进入目录,所以必须要目录有执行权限。 (1)文件或目录的访问权限分为只读“r”、只写“w”、可执行“x”三种; (2)目录的可执行权限是表示可否在目录下执行命令。如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目录。即使目录仍然有-r 读权限(这个地方很容易犯错,认为有...
2018-03-23 18:56:33
445
原创 Linux的开发工具
简单的来讲,编译器就是讲“高级语言”翻译为“低级语言”,也就是“机器语言”。 常用的文本编译器:vim, Emacs, Notepad++,TextMate,Sublime Text vim:vim是一个类似于Vi的著名的功能强大、高度可定制的文本编辑器。 Emacs:Emacs即Editor MACroS(宏编辑器),是一种文本编辑器,在程序员和其他以技术工作为主的计算机用户中广受欢迎。 N
2018-03-23 16:03:42
194
原创 拷贝构造函数和赋值运算符的重载的调用次数问题
系统在什么情况下会进行优化呢?当拷贝构造存在连续的赋值情况的时候,当多个临时对象连续赋值的时候 简单点来说就是,再一次拷贝构造结束后,并没有直接返回给要创建的对象而是又再次进行了拷贝构造。或者是,建立一个临时对象,来进行拷贝构造,然后又返回了一个临时对象,再用这个返回的临时对象继续拷贝构造。这时候,系统就会自动优化。class AA {}; AA f (AA a) {
2017-11-21 23:40:46
557
原创 类型萃取
类型萃取:类型萃取使用模板技术来萃取类型(包含自定义类型和内置类型)的某些特性,用以判断该类型是否含有某些特性,从而 在泛型算法中来对该类型进行特殊的处理用来提高效率或者其他。 int和string传给TypeCopy函数的__TypeTraite中的类型,int类型就传给__TypeTraite得到__TrueType,然后通过下面
2017-11-21 23:03:56
193
原创 菱形继承
菱形继承:二义性:B里有一个A,C里也有一个A,D里有一个B,也有一个C,也就是说A-B-D,A-C-D这样的逻辑关系,但是A只有一个,更改B里的A时,C里的A没有变化,更改C里的A时,B里的A没有变化。为了防止这样的事情发生,应该添加有一个关键字:virtual。
2017-11-12 20:03:46
181
原创 C/C++的动态内存管理
大家好,我今天来给大家讲解一下C/C++的动态内存管理。C:C当中一共有三个函数,他们分别是 ,malloc、calloc和realloc。free是动态内存的释放。 malloc:1.动态内存分配。 2.它的参数是需要分配的内存字节数。 3.它分配内存的时候需要向内存池申请分配所需要的内存大小,并且分配的是一块连续的内存。如果说内存
2017-10-28 22:22:56
230
原创 类和对象的基础知识
大家好,今天我们来说说关于类的一些基础知识。类的定义:在C++中对象的类型称为类。访问限定符:1.private,私有的。只能被本类中的成员函数所引用,类外不能调用(友元类例外)。 2.public,公有的。既可以被奔雷中的成员函数所以用,也可以被类的作用域的其他函数所引用。 3.protected
2017-10-27 21:18:25
195
原创 黑框框里的三子棋
game.h:#ifndef __GAME_H__#define __GAME_H__#include#include#include#include#include#define ROWS 3#define COLS 3//srand((unsigned int)time(NULL));//void init_board
2017-07-19 14:26:22
259
原创 先定一个小的目标
我叫杨宇龙,是陕西科技大学的一名学生。我喜欢编程,我想成为一名优秀的程序员,进入一家优秀的公司。上课认真听讲是必须的,课后还要动手练习编程,让编程成为生活的一部分,我打算在 每周花费30个小时去练习编程,让自己变的更好,更加优秀,每天一点点,时间长了,就会收获很多,先定一个小的目标,把自己现在的事情做到更好。
2017-06-25 10:47:13
336
原创 学习C语言的第一天
2017年6月23号,也就是今天,我开始学习C语言了,很开心也很激动,毕竟这是我第一次正儿八经的接触一门电脑语言。 今天,我们学习了C语言的一些基础知识,有数据类型、自定义类型,常量,变量等等,有的能听懂,有的听不懂,尽管有的听不懂,但是我还是努力的去听,因为我想学好C语言。开始学习这门课程,给自己制定良好的学习计划,每天学一点点。
2017-06-24 22:31:17
221
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人