自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【刷题总结】一些记录

一些记录二分法查找代码容器size的返回类型关于一些矩阵/字符串合并关于递归二分法查找代码int twodivide(int a[], int n,int target){ int begin = 0; int end = n - 1; int midle; while (begin <= end)//是小于等于不是小于 { midle = begin + (end - ...

2020-05-01 23:28:36 123

原创 【C++】面试基础搬运

类型和安全检查不同宏定义是字符替换,没有数据类型的区别,同时这种替换没有类型安全检查,可能产生边际效应等错误;const常量是常量的声明,有类型区别,需要在编译阶段进行类型检查编译器处理不同宏定义是一个"编译时"概念,在预处理阶段展开,不能对宏定义进行调试,生命周期结束与编译时期;const常量是一个"运行时"概念,在程序运行使用,放在内存中的data段中。存储方式不同宏定义是直接替换,不会分配内存,存储于程序的代码段中;const常量需要进行内存分配,存储于程序的数据段中是否可以做函数参数。

2023-07-15 16:07:50 556

原创 【C++语法】new和malloc的区别

属性new和delete是C++中独有的操作符,需要编译器支持;而malloc和free是C/C++中的标准库函数,需要头文件支持。参数使用new操作符申请内存分配时无须指定内存块的大小,编译器会根据类型信息自行计算。而malloc则需要显式地指出所需内存的尺寸。返回类型new操作符内存分配成功时,返回的是对象类型的指针,类型严格与对象匹配,无须进行类型转换,故new是符合类型安全性的操作符。而malloc内存分配成功则是返回void * (可强制转换为任何类型),需要通过强制类型转换将voi

2020-06-26 23:42:43 243

原创 【Linux网络编程】read返回值总结以及封装nread

函数示例慢速系统可能造成进程阻塞,慢速系统调用调用被系统中断后 可以选择重启int Accept(int fd, struct sockaddr *sa, socklen_t *salenptr){ int n; again: if ( (n = accept(fd, sa, salenptr)) < 0) { if ((errno == ECONNABORTED) || (errno == EINTR)) goto again; else perr_exit("acc

2020-06-26 15:39:56 1855

原创 【Linux网络编程】协议上限分析

MTU:通信术语 最大传输单元(Maximum Transmission Unit,MTU)是指一种通信协议的某一层上面所能通过的最大数据包大小(以字节为单位)。最大传输单元这个参数通常与通信接口有关(网络接口卡、串口等)。以下是一些协议的MTU:FDDI协议:4352字节以太网(Ethernet)协议:1500字节PPPoE(ADSL)协议:1492字节X.25协议(Dial Up/Modem):576字节Point-to-Point:4470字节~...

2020-06-26 15:39:32 209

原创 【Linux网络编程】客户端具体实现

#include<sys/socket.h>#include<stdlib.h>#include<ctype.h>//toupper的头文件#include<arpa/inet.h>// sockaddr_in#define SERV_PORT 6666#define SERV_IP "127.0.0.1"int main(void){ int cfd; struct sockaddr_in serv_addr; //socklen

2020-06-26 14:39:25 289

原创 【Linux网络编程】服务器端具体实现

注意的点包含头文件sockaddr的强制类型转换提供默认宏 BUFSIZ为默认buf大小socket 函数建立套接字bind 指定IP端口号listen 指定最大同时发起的连接数accept 阻塞等待客户端连接readread数据转换Write给客户端关闭连接close#include<stdio.h>#include<unistd.h>#include<sys/socket.h>#include<stdlib.h>#include<c

2020-06-26 11:28:11 242

原创 【Linux网络编程】Socket编程

socket概念定义IP地址文件类型Linux中文件类型占用空间:普通文件 目录 软链接不占用空间:字符设备 块设备 管道 套接字管道全双工模式预备知识网络字节号IP地址转换函数sockaddr数据结构类型转换定义传参套接字函数Socket函数bind函数Listenaccept函数connect函数 客户端函数模型流程图定义Socket本身有“插座”的意思,在Linux环境下,用于表示进程间网络通信的特殊文件类型。本质为内核借助缓冲区形成的伪文件。既然是文件,那么理所当然的,我们可以使用文件描述符引

2020-06-26 10:49:23 317

原创 【LeetCode】最长公共子子串

目录问题分析图表分析代码实现问题分析和LCS问题唯一不同的地方在于当A[i] != B[j]时,res[i][j]就直接等于0了,因为子串必须连续,且res[i][j] 表示的是以A[i],B[j]截尾的公共子串的长度。图表分析代码实现#include <stdio.h>#include <string.h> #define N 256int f(const char* s1, const char* s2){ int a[N][N]; int len1 =

2020-06-25 23:19:33 670

原创 【LeetCode】LCS最长公共子序列

最长公共子序列题目描述思路分析递归结构算法实现输出最长子序列算法实现题目描述思路分析设A=“a0,a1,…,am”,B=“b0,b1,…,bn”,且Z=“z0,z1,…,zk”为它们的最长公共子序列。不难证明有以下性质:如果am=bn,则zk=am=bn,且“z0,z1,…,z(k-1)”是“a0,a1,…,a(m-1)”和“b0,b1,…,b(n-1)”的一个最长公共子序列;如果am!=bn,则若zk!=am,蕴涵“z0,z1,…,zk”是“a0,a1,…,a(m-1)”和“b0,b1,…,b

2020-06-25 23:01:02 470

原创 【LeetCode】动态规划相关问题汇总

动态规划相关问题汇总动态规划基础70. 爬楼梯题目描述题解1 使用数组题解2 两个临时变量120. 三角形最短路径和题目描述题解1 两行变量记录 复杂度O(n)题解2 一行变量 自顶向下 空间复杂度O(n)题解3 自底向上 不需要额外空间343. 整数拆分题目描述题解1 动态规划279. 完全平方数题目描述题解1 使用队列进行图的遍历(时间较短)题解2 动态规划91. 解码方法题目描述题解1 难点在于分类讨论62. 不同路径题目描述题解163. 不同路径 II题目描述题解1 额外空间题解2 不使用额外空间

2020-06-25 20:21:40 492

原创 【LeetCode】递归回溯相关问题汇总

递归回溯相关问题汇总树形问题17. 电话号码的字母组合题目描述题解1 使用vector储存临时结果93. 复原IP地址题目描述题解1 回溯+剪枝131. 分割回文串题目描述题解1 遍历以每个字母为起点的所有可能排列问题46. 全排列题目描述题解1 使用visited记录之前是否使用过该元素47 全排列Ⅱ题目描述题解1 使用map容器记录使用次数 每个位置只能使用一次该元素避免重复题解2 使用vector排序 如果nums[i]==nums[i-1]就跳过组合问题及优化77. 组合题目描述题解1 回溯题解2

2020-06-25 17:47:41 220

原创 【Linux基础操作】进程管理和服务器搭建

目录1. 压缩包管理1>. 屌丝版:2>. 高富帅版:1). tar -- 不使用z/j参数 , 该命令只能对文件或目录打包2). rar -- 必须手动安装该软件3). zip --总结: 相同之处:2. 进程管理:1. 压缩包管理1>. 屌丝版:1). gzip – .gz格式的压缩包gzip *.txt //每个文件分别压缩 不会保留原始文件了 不能打包压缩gunzip *.txt//解压缩 还原文件2). bzip2 – .bz2格式的压缩包bzip2 *.txt /

2020-06-15 23:27:08 238

原创 【Linux基础操作】在虚拟机上搭建Linux操作系统的ftp服务器

ftp服务器的搭建和测试建立虚拟机和主机连接Linux虚拟机查看IP地址主机查看IP地址查看链接虚拟机上使用vsftpd软件建立ftp服务器下载安装vsftpd修改配置文件重启软件物理机win登录ftp登录ftp匿名登录ftp服务器为匿名用户指定根目录服务器上创建ftp目录修改配置文件修改文件夹权限物理机登录正常上传下载文件建立虚拟机和主机连接Linux虚拟机查看IP地址ifconfig主机查看IP地址ifconfig查看链接虚拟机ping’主机的IP地址可以ping通 收到数据包虚拟机上使

2020-06-15 22:16:25 647

原创 【LeetCode】二叉树以及二叉树递归相关问题汇总

二叉树相关二叉树的天然递归结构104. 二叉树的最大深度题目描述题解111. 二叉树的最小深度题目描述题解 注意终止条件必须是叶子节点 左右子树为空题解2 简化代码题解3简单的二叉树递归问题226. 翻转二叉树题目描述题解1 先交换左右节点的位置再反转节点题解2 先反转左右节点 再交换位置100. 相同的树题目描述题解1 判断左右节点是否相同并且root值相同题解2 化简代码101. 对称二叉树题目描述题解1 左子树反转后和右子树相同题解2 右子树等于左子树 左子树等于右子树 根节点值相等222. 完全

2020-06-11 22:43:59 474

原创 【Linux基础操作】Day1重点回顾

Linux 基础1.Shell、 Bash 学名叫什么?命令解析器2.Shell 和 Bash的关系?现有shell 后有bash3.在linux终端下使用什么键来补齐命令或者路径?Tab4.当前用户所在目录为/home/li 此时按两次tab键会看到什么效果?列出itcast目录下面的目录 liuj/ liz/5.终端下, 查看上一条历史命令的快捷键?Ctrl+p6.终端下, 查看下一条历史命令的快捷键?Ctrl+n7.终端下, 光标向左移动的快捷键?Ctrl+b8.终端下, 光标向右移动

2020-06-11 20:54:52 193

原创 【Linux基本操作】Day1

基本操作*的部分为重点1. 命令解析器:2. Linux 快捷键3. Linux系统目录结构:4. 用户目录:*5. 文件和目录操作1>. (列出目录)2>. (路径转换):3>.(创建目录)4>. (删除空空目录)5>.(目录里创建文件):6>. (删除所有东西):7>. (复制文件或目录)8>. (查看文件的具体信息5种方式 了解即可):9>. (ln 快捷方式 软连接):10>. (ln 创建硬链接)11>. mv命令改名字或移动6.

2020-06-11 20:52:22 229

原创 【笔试相关】OJ在线编程常见输入输出练习(C++版)牛客网题目

输入输出练习A+B(1)A+B(2)A+B(3)A+B(4)A+B(5)A+B(6)A+B(7)字符串排序(1)字符串排序(2)字符串排序(3)字符串分割函数(处理结尾的两种方法)A+B(1)void fun1(){ int a, b; while (cin >> a >> b) { cout << a + b << endl; }}A+B(2)void fun2(){ int n, a, b; cin >> n

2020-06-07 22:07:41 2714 1

原创 【笔试相关】数论相关基础算法

关于数字质因数分解最大公约数辗转相除法辗转相减法穷举法最小公倍数通过最大公约数求解穷举法质因数分解vector<int> dividenum(int n){ vector<int> ret; int n_sqrt = sqrt(n); //循环截至条件到根号n就行 //从2开始,遇到的第一个因数,一定是质数 //比如24,遇到了2,就一直除,直到余数不为0 //有人说,4也是24的因数啊,但是不是质数 //这个在遇到2时,一直除,这里已经将4除掉了 //24已经

2020-06-07 13:52:45 189

原创 【LeetCode】栈和队列相关问题

栈和队列相关问题栈的基础应用20. 有效的括号题目描述方法1 基础栈的应用方法2 将右括号入栈 加速150. 逆波兰表达式求值题目描述方法1三级目录栈的基础应用20. 有效的括号题目描述方法1 基础栈的应用 bool isValid1(string s) { stack<char> stack1; for (int i = 0;i < s.size();i++) { if (s[i] == '{' || s[i] == '(' || s[i] == '[')

2020-06-07 11:36:17 334

原创 【LeetCode】链表相关问题总结

链表相关问题总结链表相关辅助函数链表结构数组创建链表向量创建链表链表末尾插入元素删除和打印链表节点间穿针引线206. 反转链表题目描述方法1 迭代方法2 递归92. 反转链表 II题目描述方法1 缓存相关节点83. 删除排序链表中的重复元素题目描述方法1 保留第一个重复元素方法2 保留第一个重复元素优化86. 分隔链表题目描述方法1 根据大小划分成两个子链表再合并328. 奇偶链表题目描述方法1 分成两个子链表再合并2. 两数相加题目描述方法1 转化成整数在转化成链表(数字太大会溢出)方法2 从头到尾依次按

2020-06-06 23:23:34 306

原创 【LeetCode】查找表相关问题汇总

这里写目录标题一级目录349. 两个数组的交集题目描述方法1 两个set用来去重查找三级目录三级目录三级目录350. 两个数组的交集 II题目描述方法1方法2c++ Map的行为模式其他思路 排序后双指针242. 有效的字母异位词题目描述方法1 Map容器统计每个单词中字母出现的次数方法2 使用数组记录每个单词出现次数 遍历数组方法3 使用map简化方法2202. 快乐数题目描述方法1 使用set容器查找是否重复方法2 使用快慢指针破除循环290. 单词规律题目描述分割函数1分割函数2 遍历每一个字符方法1

2020-05-26 01:56:14 247

原创 【LeetCode】滑动窗口解决字符串问题

滑动窗口209. 长度最小的子数组题目描述方法1 暴力搜索 复杂度为O(n3)方法2 滑动窗口方法3 二分查找3. 无重复字符的最长子串题目描述方法1 标准格式的滑动窗口方法2 使用while循环直到将左指针滑到合适位置438. 找到字符串中所有字母异位词题目描述算法实现三级目录76. 最小覆盖子串题目描述算法实现总结滑动窗口公式209. 长度最小的子数组题目描述方法1 暴力搜索 复杂度为O(n3) int minSubArrayLen(int s, vector<int>&amp

2020-05-18 16:37:53 443

原创 【LeetCode】对撞双指针相关题目(待续)

对撞双指针167. 两数之和 II - 输入有序数组题目描述思路1 暴力解法思路2 二分搜索法思路3 双指针对撞思路4 二分搜索+双指针对撞125. 验证回文串二级目录二级目录二级目录344. 反转字符串二级目录二级目录二级目录345. 反转字符串中的元音字母二级目录二级目录二级目录三级目录11. 盛最多水的容器二级目录二级目录二级目录三级目录167. 两数之和 II - 输入有序数组题目描述思路1 暴力解法思路2 二分搜索法思路3 双指针对撞 vector<int> twoSum

2020-05-18 16:06:31 157

原创 【LeetCode】经典排序算法变形

这里写目录标题75. 颜色分类题目描述方法1 统计每个元素个数方法2 三路快排88. 合并两个有序数组题目描述二级目录二级目录215. 数组中的第K个最大元素题目描述三级目录75. 颜色分类题目描述方法1 统计每个元素个数 void sortColors(vector<int>& nums) { int count[3] = { 0 };//[0..low)为0 for (int i = 0;i < nums.size();i++) { count[nu

2020-05-18 15:41:36 235

原创 【LeetCode】关于数组中两个指针的题目

这里写目录标题283.移动零题目描述方法1 使用额外空间方法2方法3 使用交换方法4 使用count记录需要移动的位数27 移除元素题目描述方法1 拷贝覆盖方法2 交换移除26 删除排序数组中的重复项题目描述思路1 快慢指针思路2 快慢指针80 删除排序数组中的重复项 II题目描述二级目录二级目录二级目录二级目录三级目录283.移动零题目描述方法1 使用额外空间 void moveZeroes1(vector<int>& nums) { vector<int>

2020-05-17 02:09:37 237

原创 【数据结构】求单源最短路径的C++实现

求单源最短路径Dijkstra算法(适用于正权图)方法代码Bellman算法(适用于含有负权边的图)方法代码其他辅助的文件Dijkstra算法(适用于正权图)方法最短路径:Dijkstra算法首先 对于没有mark的点,如果只通过marked的点就可以有更小的路径的话是不可能的,因为已经marked过的点能到达的所有路径已经都试过了 所以只可能通过其他的一点代码#pragma once#include<stdio.h>#include<cassert>#inclu

2020-05-12 14:43:04 530

原创 【数据结构】最小生成树的C++实现

这里写目录标题LazyPrimeMSTPrimeMSTKruskal使用到的数据结构的实现最小堆最小索引堆并查集描述边的数据结构 Edge稀疏图使用邻接表 元素为Edge*稠密图使用邻接矩阵 元素为Edge*测试函数LazyPrimeMST使用的数据结构 最小堆#pragma once#include<stdio.h>#include<cassert>#include<vector>#include"MinHeap.h"#include"Edge.h"u

2020-05-10 18:13:03 695

原创 【数据结构】图的表示以及遍历的C++实现

注意stringstream 类的使用 完成string到int的类型转化先clear再str("")实现重复使用typename Graph目录稀疏图的邻接表实现稠密图的邻接矩阵实现模板类实现各种类型图的测试从文件中读取图深度优先搜索遍历深度优先搜索遍历并输出查询路径广度优先搜索实现图的遍历和路径表示稀疏图的邻接表实现#pragma once#include <iostream&...

2020-05-06 17:15:08 231

原创 【数据结构】并查集Union类的实现和优化

并查集这种数据结构使用数组实现 虽然是树形结构 但是是数组实现原始形式每一个元素都有自己id值 如果id值一样 就是一组元素合并时 遍历每一个元素 更改其id值#pragma once#include <iostream>#include<cassert>using namespace std;//没个元素都有自己id值 如果id值一样 就是一组元素//合...

2020-05-06 02:05:16 225

原创 【数据结构】二叉搜索树的C++实现和优化测试

私有成员变量private: struct Node { Key key;//键 Value value;//值 Node* left;//左子树 Node* right;//右子数 Node(Key k, Value v)//节点类型 { key = k; value = v; left = NULL; right = NULL; } ...

2020-05-06 01:52:04 192

原创 【数据结构】二叉线索树插入元素的三种方法

二叉线索树插入元素的四种方法关于函数间接修改指针值递归返回节点递归返回void循环插入 临时变量为二级指针循环插入 临时变量为一级指针关于函数间接修改指针值树的遍历不涉及子叶的修改 所以不用考虑返回值和指针的问题链表的逆序一般用的是循环 所以也不用考虑char p[15] = "abcdef";char p2[15] = "1235abcdef";void change(char**...

2020-05-04 16:52:33 977

原创 【数据结构】排序算法总结和优化以及测试函数

各种排序算法测试用的函数生成随机数组生成近乎有序的随机数组打印数组判断是否完成测试时间复制数组定义不同的数据类型进行测试定义学生类型并为了方便比较进行操作符重载测试函数 主函数冒泡排序选择排序插入排序原始方式 每次都进行交换优化的方式其他函数调用时进行参数修改归并排序原始方式主函数递归调用排序函数merge函数优化自底向上的方法(从小到大 不用递归)快速排序原始方式主函数递归函数分类函数 part...

2020-05-03 14:51:50 509

原创 【LeetCode】06. 从尾到头打印链表

使用栈类型 先入后出 时间 30-80不等 空间 100/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Soluti...

2020-05-02 00:39:36 128

原创 【LeetCode】10-1.斐波那契数列

非递归 使用循环class Solution {public: int fib(int n) { if(n==0){return 0;} if(n==1){return 1;} int f1=0; int f2=1; int f=0; for(int i=0;i<n-1;i++) ...

2020-05-01 23:05:56 148

原创 【LeetCode】05.替换空格

新建一个字符串,如果是空格就增加%20,否则增加原字符。 string replaceSpace(string s) { int len=s.length(); string result; for(int i=0;i<len;i++) { if(s[i]!=' ') {...

2020-05-01 22:47:18 156 1

原创 【c++】有符号不匹配

int main(){ vector<vector<int>> matrix; matrix.resize(1); int j = 0; int m = matrix[0].size() - 1; bool k = (j <= int(matrix[0].size() - 1)); bool n = (j <= m); return 0;}...

2020-05-01 17:23:04 303

原创 【LeetCode】04. 二维数组中的查找

想法 先比较每一行 然后每一行用二分法查找class Solution {public: bool findNumberIn2DArray(vector<vector<int>>& matrix, int target) { int ret=false; int height=matrix.size(); ...

2020-05-01 16:51:38 185

原创 【LeetCode】03.数组中重复的数字

题目描述思路 使用哈希表class SolutionHash{public: int findRepeatNumber(vector<int> &nums) { unordered_map<int, int> count;//哈希表变量 for (int n : nums) { ...

2020-05-01 14:37:32 190

原创 【数据结构】哈希表类的C++实现

大概就是给一堆数据,根据数据的值决定它的储存位置,比如新建一个大小为20的数组,把元素10放在10的位置,15放在15的位置,元素和位置的关系由哈希函数决定,这里用的是除留取余函数。using namespace std;#define HASHSIZE 12#define NULLKEY -327168class HashTable{private: int* elem;//元...

2020-05-01 10:55:45 1083

空空如也

空空如也

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

TA关注的人

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