自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 set&&map&&AVL树&&红黑树

struct AVLTreeNode//如果用class 记得给public{}//该节点的左孩子//该节点的右孩子//该节点的双亲T _data;int _bf;//该节点的平衡因子//balance factor。

2024-04-21 14:45:13 709

原创 C++异常

实际中大多都会定义一套继承的规范体系,这样抛出的异常都是继承的派生类对象,捕获一个基类就可以了。// 服务器开发中通常使用的异常继承体系protected:int _id;// ...{};{};{};int main()try{// 抛出对象都是派生类对象catch (const Exception& e) // 这里捕获父类对象就可以{}return 0;

2024-03-28 11:16:22 877

原创 leetcode::两个数组的交集

给定两个数组 nums1 和 nums2 ,返回它们的交集输出结果中的每个元素一定是 唯一 的。我们可以不考虑输出结果的顺序。输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输入:nums1 = [1,2,2,1], nums2 = [2,2]定义两个set,从头开始依次比较,以其中一个set为基准。解释:[4,9] 也是可通过的。

2024-03-26 15:58:11 280

原创 leetcode::二叉树的最近公共祖先

在这里插入图片描述](https://img-blog.csdnimg.cn/direct/b456a72f3e61434392c6c0b646bac724.png#pic_center = 800x)百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。从root节点开始,判断p、q节点是在左子树还是右子树。

2024-03-24 11:32:16 206

原创 letcode::根据二叉树创建字符串

给你二叉树的根节点 root ,请你采用前序遍历的方式,将二叉树转化为一个由括号和整数组成的字符串,返回构造出的字符串。空节点使用一对空括号对 “()” 表示,转化后需要省略所有不影响字符串与原始二叉树之间的一对一映射关系的空括号对。前序遍历,从树中取出元素组成数组。

2024-03-23 14:43:04 298

原创 进程 信号

用kill -l命令可以查看系统定义的信号列表信号列表- 每个信号都一个编号和一个宏定义名称,这些宏定义可以在signal.h中找到- 编号[1,31]的信号称之为普通信号,编号[34,64]以上的是实时信号。- 不论是实时信号还是普通信号,这些信号各自在什么条件下产生,默认处理动作是什么,在signal(7)中都有说明。

2024-03-20 11:11:33 756

原创 Linux进程控制

程序替换,是通过特定的接口,加载到磁盘上的一个权限的程序(代码和数据),加载到调用进程的地址空间中。execl是程序替换,调用该函数成功之后,会将当前进程的所有的代码和数据都进行替换,包括已经执行的和没有执行的。进程早就存在了,进程替换也只是改变映射关系,并不影响进程PCB的优先状态,自然没有创建新的子进程。程序替换,是通过特定的接口,加载到磁盘上的一个权限的程序(代码和数据),加载到调用进程的地址空间中。以fork()为例,从已存在的进程中创建一个新进程,新进程为子进程,原进程为父进程。

2024-02-12 08:10:29 849 1

原创 C++继承

如上,Person是父类,也称基类;Student是子类,也称作派生类。

2023-11-28 11:48:13 945

原创 letcode::数组中的第k个最大元素

请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。输入: [3,2,3,1,2,4,5,5,6], k = 4。你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。输入: [3,2,1,5,6,4], k = 2。

2023-11-24 11:10:47 489

原创 牛客::栈的压入、弹出序列

输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。如上,在比较入栈数据和出战数据是否匹配之后,都会入新的数据,所以可以简化一下步骤。如下以“压入:1 2 3 4 5、弹出:3 2 5 4 1”为例。模拟栈输入输出的过程。

2023-11-19 14:35:00 74

原创 letcode::最小栈

可以定义一个_min成员,每次栈插入数据时,就更新_min。但是如果栈删除的数据恰好是当前栈中最小的数据,_min的更新就很困难,且不论栈不允许遍历,遍历的O(N)复杂度是与题意“在常数时间内检索到最小元素的栈”相悖的。

2023-11-19 12:42:34 118

原创 Linux环境基础开发工具——Vim

vim的使用

2023-11-10 16:03:02 51

原创 Linux调试器--gdb

gdb基本操作

2023-11-02 11:47:36 38

原创 使用git命令行

git命令

2023-11-01 12:55:16 388 3

原创 Linux下的一个小程序——进度条

简单粗略认识缓冲区、实现一个简单粗略的进度条

2023-10-31 13:15:11 37

原创 MySQL表的增删查改

CRUD:Create(创建),Retrieve(读取),Update(更新),Delete(删除)。

2023-10-30 22:50:49 43

原创 MySQL表的约束

真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性,从业务逻辑角度保证数据的正确性。

2023-10-30 22:50:38 35

原创 MySQL表的操作

users表存储引擎是M有ISAM,再数据目中有三个不同的文件,分别是:user.frm:表结构 user.MYD:表数据 users.MYI:表索引。在项目实际开发中,经常修改某个表的结构,比如字段名字,字段大小,字段类型,表的字符集类型,表的存储引擎等。character set 字符集,如果没有指定字符集,则以所在数据库库的字符集为准。collate校验规则,如果没有指定校验规则,则以所在数据库的叫校验规则为准。不同的存储引擎,创建表的文件不一样。查看名为user的表的属性。

2023-10-30 22:50:23 33

原创 MySQL数据类型

enum设定只是提供了若干个选项的值,最终一个单元格中,实际只存储了其中一个值,处于效率考虑,这些值实际存储的是数字,每个选项值依次对应数字:1,2,3……set设定只是提供了若干个选项的值,最终一个单元格中,设计可存储了其中任意多个值,这些值实际存储的也是数字,这些选项每个选项值一次对应如下数字:1,2,4,8,16,32。ps:尽量不使用unsigned,对于int类型可能存放不下的数据,int unsigned同样可能存放不下,与其如此,不如设计时,将int类型提升为bigint类型。

2023-10-30 22:50:13 40

原创 MySQL库的操作

取数据时,取数据的关键字通过特定的编码格式,去数据库中按行比较(筛选的本质就是比较) 然后取出(数据库的校验编码)如果备份一个数据库时,没有带上参数-B,在恢复数据库时,需要先创建空数据库,然后使用数据库,再使用source来还原。当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集:utf8,校验规则:utf8_general_cl。查看创建的数据库的详细信息:show create database 创建的数据库名。对数据库的修改主要指的是修改数据库的字符集、校验规则。

2023-10-30 22:49:45 47

原创 MySQL数据库基础

相较于文件,数据库更安全、更利于数据查询和管理、更利于存储海量数据、在程序中控制更为方便数据库存储介质:磁盘、内存。

2023-10-30 22:49:28 47

原创 Linux软件包管理器yum

yum

2023-10-30 22:46:25 43

原创 Linux编译器-gcc/g++的使用

gcc/g++

2023-10-29 19:10:27 38

原创 Linux项目自动化构建工具-make/Makefile

make/Makefile

2023-10-29 19:10:01 36

原创 Linux权限

Linux下有两种用户:超级用户(root)、普通用户(adduser)

2023-08-27 14:57:12 201

原创 C/C++内存管理

/申请单个Test类型的对象 Test * p1 = new Test;delete p1;//申请10个Test类型的对象 Test * p2 = new Test [ 10 ];return 0;在申请自定义类型的空间时,new会调用构造函数,delete会调用析构函数;而malloc与free不会new的原理调用operator new函数申请空间在申请空间上执行构造函数,完成对象的构造delete的原理。

2023-06-05 09:33:39 305

原创 Linux 常见指令笔记

Linux常见指令及其选项

2023-05-29 20:50:25 565

原创 类 与 对象

C++类和对象

2023-05-12 15:03:37 449

原创 C++语法

C++语法

2023-04-26 16:38:13 369

原创 用队列实现栈

用队列实现栈: 题目链接队列: 笔记链接用两个队列实现一个栈:

2022-06-06 13:33:23 128

原创 用栈实现队列

用栈实现队列:题目链接用两个栈实现队列:一个栈负责入队列,一个栈负责实现出队列。出队列时,如果负责出队列的栈为空,则将另一个栈的数据倒入其中;如若有数据则直接出即可

2022-06-06 13:33:07 165

原创 数据结构——队列

队列:只允许在一端进行插入数据的操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出(FIFO(first in first out))入队列:进行插入的一端称为队尾出队列:进行删除的一端成为队头队列的实现可以用数组或者链表来实现,使用后者实现的结构更优一些,因为在使用数组实现出队列的操作时,效率会比较低而对于链表的选择,单链表相较于双链表更适合实现队列(带头双向循环链表的优势是方便任意位置的插入删除)队列的初始化队列的插入队列的性质规定只能从队尾插入数据队列的删除队列的性质规定

2022-06-02 20:21:36 234

原创 数据结构——栈

栈:一种特殊的线性表,其只允许固定的一端进行插入和删除元素的操作。进行数据的插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的元素遵循后进先出(LIFO(last in first out))的原则压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶出栈:栈的删除操作叫做出栈。出数据也在栈顶栈的实现一般可以使用数组或者链表实现。相较于链表,数组的结构实现更优一些。数组尾插尾删的效率非常高,同时缓存利用率也很高。静态的栈:动态的栈:动态的栈的优势相较于静态的栈是不言而喻的,这里自然是选用动态的栈

2022-06-02 14:03:16 854

原创 有效的括号

有效字符串必须是:其内部的左括号紧挨着相同类型的有括号那么创建一个栈,如果是“(”或者“[”或者“{”,那么将其压入栈中;如果是“)”或者“]”或者“}”,那么将其与上一个压入栈中的字符进行比对。若符合有效字符串的性质,则继续比对;若不符合则返回false...

2022-06-02 14:01:14 98

原创 动态内存管理

动态内存函数 柔性数组

2022-04-15 14:40:44 1133

原创 字符串操作函数&内存操作函数

字符串操作函数 内存操作函数

2022-04-11 16:42:07 599

原创 C语言联合

联合

2022-04-07 21:47:01 854

原创 C语言枚举

枚举

2022-04-07 15:13:06 545

原创 C语言位段

位段

2022-04-06 21:47:37 755

原创 C语言结构体

结构体

2022-04-06 14:52:44 288

空空如也

空空如也

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

TA关注的人

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