自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 贪心算法OJ

贪心算法1. 简单贪心算法(常识问题)1.1 LeetCode第455题---分发饼干1.2 LeetCode第1005题---K此取反后最大化的数组和1.2 LeetCode第860题---柠檬水找零2. 中等贪心算法2.1 LeetCode第376题---摆动序列2.2 LeetCode第122题---买卖股票的最佳时机II1. 简单贪心算法(常识问题)到底什么是贪心算法:利用局部最优来推出全局最优就是核心1.1 LeetCode第455题—分发饼干局部最优就是大饼干喂给胃口大的,充分利用饼干

2022-05-09 15:15:06 574

原创 单调栈模块

单调栈1. 每日温度2. 下一个更大元素I2.1 下一个更大元素II3. LeetCode第42题---接雨水4. LeetCode第84题---柱状图形中最大的矩形5. LeetCode第224题---基本计算器1. 每日温度遍历整个数组,如果栈不空,且当前数字大于栈顶元素,那么如果直接入栈的话就不是 递减栈 ,所以需要取出栈顶元素,由于当前数字大于栈顶元素的数字,而且一定是第一个大于栈顶元素的数,直接求出下标差就是二者的距离。(维护的是一个单调递减栈)class Solution {publi

2022-05-06 09:21:24 233

原创 二叉树OJ训练

二叉树OJ训练一级目录二级目录一级目录二级目录

2022-04-04 16:03:34 1756

原创 动态规划(子系列问题)

最长子序列问题1. LeetCode第300题---最长上升子序列2. LeetCode第674题---最长连续递增序列3. LeetCode第718题---最长重复子数组4. LeetCode第1143题---最长公共子序列5. LeetCode第516题---最长回文子序列6. LeetCode第53题---最大子序和7. LeetCode第392题---判断子序列8. LeetCode第115题---不同的子序列9. LeetCode第1035题---不相交的线10. LeetCode第647题---

2022-03-09 18:55:13 1013

原创 动态规划(股票问题及打家劫舍系列)

股票问题及打家劫舍1. 股票问题系列1.1 LeetCode第121题---买卖股票的最佳时机1.2 LeetCode第122题---买卖股票的最佳时机II1.3 LeetCode第122题---买卖股票的最佳时机III1.4 LeetCode第188题---买卖股票的最佳时机IV1.5 LeetCode第714题---买卖股票的最佳时机含手续费1.6 LeetCode第309题---最佳买卖股票时机含冷冻期2. 打家劫舍系列2.1 LeetCode第198题---打家劫舍2.2 LeetCode第213题

2022-03-01 16:07:38 412

原创 动态规划(01背包和完全背包系列)

动态规划(01背包和完全背包系列)1. 背包问题总结模板2. 01背包系列题目2.1 LintCode---01背包问题2.2 LeetCode第416题---分割等和子集2.3 LeetCode第474题---一和零2.4 LeetCode第494题---目标和2.5 LeetCode第1049题---最后一块石头的重量3. 完全背包系列题目3.1 LeetCode第322题---零钱兑换I(最大最小值问题)3.2 LeetCode第518题---零钱兑换II(组合问题)3.3 LeetCode第377题

2022-02-23 19:18:27 539

原创 字符串OJ

字符串OJ1. LeetCode第415题---字符串相加2. LeetCode第43题---字符串相乘3. LeetCode第6题---Z字形变换4. LeetCode第4题---寻找两个正序数组的中位数5. LeetCode第3题---整数反转1. LeetCode第415题—字符串相加class Solution {public: string addStrings(string num1, string num2) { string ret; int

2022-01-14 20:47:24 464 2

原创 三数之和系列题

数组---三数之和系列1. LeetCode第18题---二数之和2. LeetCode第15题---三数之和3. LeetCode第18题---四数之和4. LeetCode第16题---最接近的三数之和1. LeetCode第18题—二数之和class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { for(int i = 0;i<nums.siz

2022-01-11 16:51:53 526

原创 Hash专场

Hash专场1. LeetCode第705题---设计哈希集合2. LeetCode第706题---设计哈希映射1. LeetCode第705题—设计哈希集合链接: https://leetcode-cn.com/problems/design-hashset/解题思路:使用数组 + 单链表的形式class MyHashSet { struct Node{ int val; Node* next; Node(int key):val(key)

2021-12-26 19:27:34 283

原创 剑指offer---思维开放题

思维开放题1. 剑指offer61题---扑克牌中的顺子2. 剑指offer62题---圆圈中最后剩下的数字3. 剑指offer63题---股票的最大利润4. 剑指offer64题---求1+2+....+n5. 剑指offer65题---不用加减乘除做加法1. 剑指offer61题—扑克牌中的顺子链接:https://leetcode-cn.com/problems/bu-ke-pai-zhong-de-shun-zi-lcof/先对数组执行排序。判别重复: 排序数组中的相同元素位置相邻,因此

2021-11-04 21:36:15 205 2

原创 二分查找算法

LeetCode二分查找1. LeetCode第704题---二分查找2. LeetCode第35题---搜索插入的位置3. LeetCode第278题---第一个错误版本4. LeetCode第34题---在排序数组中查找元素的第一个和最后一个位置1. LeetCode第704题—二分查找2. LeetCode第35题—搜索插入的位置3. LeetCode第278题—第一个错误版本4. LeetCode第34题—在排序数组中查找元素的第一个和最后一个位置...

2021-10-30 14:12:28 247 1

原创 广度优先搜索

广度优先搜索1. LeetCode690题---员工的重要性2. LeetCode429题---N叉树的层序遍历3. LeetCode994题---腐烂的橘子4. LeetCode题---5. LeetCode题---1. LeetCode690题—员工的重要性链接: https://leetcode-cn.com/problems/employee-importance/这里使用的广度优先搜索的方法来解题。2. LeetCode429题—N叉树的层序遍历链接: https://leetcode-

2021-10-24 14:02:25 165 1

原创 回溯算法OJ

这里写目录标题一级目录二级目录一级目录二级目录

2021-10-23 15:41:26 418

原创 动态规划(一般题型)

动态规划1. Fibonacci数列2. 变态青蛙跳台阶3. 最大连续子数组合4. 三角矩阵5. 路径总数I5.1 路径总数II6. 最小路径和7. 背包问题8. 不同子序列1. Fibonacci数列2. 变态青蛙跳台阶3. 最大连续子数组合4. 三角矩阵5. 路径总数Iclass Solution {public: int uniquePaths(int m, int n) { //但是也不能无休止的进行下去呀,所以要有一个停止的条件 //你会发现第

2021-10-22 15:11:51 403

原创 深度优先搜索(Depth First Search)

深度优先搜索1. LeetCode690题---员工的重要性2. LeetCode733题---图像渲染3. LeetCode463题---岛屿的周长3.1 LeetCode130题---被围绕的区域4. LeetCode200题---岛屿数量4.1 LeetCode695题---岛屿的最大面积应为遍历一个点都是一条道走到黑才停止下来,所以也被称为深度优先搜索1. LeetCode690题—员工的重要性链接: https://leetcode-cn.com/problems/employee-impo

2021-10-17 18:08:03 479

原创 栈和队列经典OJ题

栈和队列经典OJ题1. LeetCode第225题---用队列实现栈2. LeetCode第232题---用栈实现队列3. LeetCode第20题---有效的括号4. LeetCode第150题---逆波兰表达式5. LeetCode第155题---最小栈6. 牛客网剑指offer21题---栈的压入、弹出序列1. LeetCode第225题—用队列实现栈链接: https://leetcode-cn.com/problems/implement-stack-using-queues/题解:用队列

2021-10-05 19:50:02 442

原创 数组面试题OJ

关于复习时自己所做的题,并写下思路剑指offer面试题3—数组中重复的数字一级目录一级目录一级目录一级目录一级目录

2021-09-30 18:25:37 297

原创 链表面试题OJ

链表OJ1. 头插或三指针翻转法1. LeetCode206题---反转链表2. LeetCode203题---移除链表元素3. 快慢指针法及其变形3.1 LeetCode876题---链表的中间结点3.2 LeetCode题---链表中倒数第k个结点3.3 剑指offer27题---链表的回文结构3.4 LeetCode141题---环形链表I3.5 LeetCode142题---环形链表II4. 找到长链表然后走差值步,然同时走4.1 LeetCode160题---相交链表5. 创造带哨兵位的头结点和

2021-09-30 15:53:34 342

原创 C++实现高并发内存池

高并发内存池1. 总体设计思路二级目录1. 总体设计思路高并发内存池整体框架由以下三部分组成,各部分的功能如下:线程缓存(thread cache):每个线程独有线程缓存,主要解决多线程下高并发运行场景线程之间的锁竞争问题。线程缓存模块可以为线程提供小于64k内存的分配,并且多个线程并发运行不需要加锁。线程从这里申请内存不需要加锁,每个线程独享一个ThreadCache,这也就是这个并发内存池高效的地方(这就是tcmalloc名字的本质来源,在这里具体的实现采用的是TLS(thread local

2021-09-18 15:38:46 2269 4

原创 自主开发的小型Web服务器

制作简易的Web服务器1. 技术特点2. 具体步骤3. CGI技术1. 技术特点网络编程(TCP/IP协议,socket流式套接字,http协议)多线程技术CGI技术2. 具体步骤HttpServer.hppInitServer()Start()Sock.hpp,对于网络接口的分装socket()bind()listen()accept()线程池技术进行处理所监听到的sockGetline()一个专门从套接字中一次读取一行的接口,因为Http的reque

2021-09-06 21:42:50 713

原创 数据库---事务

事务一级目录二级目录一级目录二级目录

2021-08-13 13:49:56 336

原创 Mysql(二)内外链接、视图以及用户管理

内外链接、视图以及用户管理1. 内外链接1.1 内连接1.2 外连接1.2.1 左外连接1.2.2 右外连接2. 视图特性2.1 视图规则和限制3. 用户管理3.1 用户信息3.2 创建用户3.3 删除用户3.4 修改用户密码3.5 给用户授权3.6 回收权限1. 内外链接1.1 内连接内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选,我们前面学习的查询都是内连接,也是在开发过程中使用的最多的连接查询。其实内连接就是得到了一个完整的笛卡尔积(组合的所有情况)1.2 外连接

2021-08-12 17:57:18 235

原创 数据库---索引

这里写目录标题1. 认识磁盘1.1 MySQL与磁盘交互基本单位1.2 建立共识(理解索引非常重要概念)1.3 为何IO交互要是Page1. 认识磁盘MySQL给用户提供存储服务,而存储的都是数据,数据在磁盘这个外设当中。磁盘是计算机中的一个机械设备,相比于计算机其他电子元件,磁盘效率是比较低的,在加上IO本身的特征,可以知道,如何提交效率,是MySQL的一个重要话题。磁盘中一个盘片扇区数据库文件,本质其实就是保存在磁盘的盘片当中。也就是上面的一个个小格子中,就是我们经常所说的扇区。当然,

2021-08-11 14:30:51 229

原创 Mysql(一)数据库基础

数据库基础1. 连接服务器2. 服务器,数据库,表关系3. 使用案例4. MySQL架构5. SQL分类6. 存储引擎存储数据用文件就可以了,为什么还要弄个数据库?文件保存数据有以下几个缺点:文件的安全性问题文件不利于数据查询和管理文件不利于存储海量数据文件在程序中控制不方便数据库存储介质:磁盘、内存为了解决上述问题,专家们设计出更加利于管理数据的东西——数据库,它能更有效的管理数据。1. 连接服务器输入:mysql -h 127.0.0.1 -P 3306 -u root -p

2021-08-07 17:38:54 167 1

原创 数据结构---B树和B+树

B树和B+树1. 基本搜索结构2. B树概念2.1 B树的插入分析3. B+树和B*树4. MyISAM5. InnoDB1. 基本搜索结构对比于二叉搜索树、AVL树和红黑树,一般用于数据内存查找。他们不适合用于数据量很大的情况,因为一次性无法加载到内存中。上面方法其实只在内存中保存了每一项数据信息中需要查找的字段以及数据在磁盘中的位置,整体的数据实际也在磁盘中(但是读取磁盘的速度相较于内存来说,那真的是慢的不行)。缺陷:树的高度比较高,查找时最差情况下要比较树的高度次数据量如果特别大时,树

2021-08-07 16:17:02 834

原创 C++---类型转换

C++类型转换1. C语言中的类型转换2. C++强制类型转换2.1 static_cast2.2 reinterpret_cast2.3 const_cast2.4 dynamic_cast3. explicit和RTTI(运行时类型识别)1. C语言中的类型转换在C语言中,如果赋值运算符左右两侧类型不同,或者形参与实参类型不匹配,或者返回值类型与接收返回值类型不一致时,就需要发生类型转化,C语言中总共有两种形式的类型转换:隐式类型转换和显式类型转换。隐式类型转化:编译器在编译阶段自动进行,能

2021-08-05 15:23:45 156

原创 C++---特殊类设计

特殊类设计1. 设计模式2. 单例模式2.1 饿汉模式2.2 懒汉模式3. 设计一个类- - -只能在堆上创建对象4. 只能在栈上创建对象5. 不能被拷贝6. 不能被继承1. 设计模式设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。为什么会产生设计模式这样的东西呢?就像人类历史发展会产生兵法。最开始部落之间打仗时都是人拼人的对砍。后来春秋战国时期,七国之间经常打仗,就发现打仗也是有套路的,后来孙子就总结出了《孙子兵法》。孙子兵法也是类似。使用设计

2021-07-31 17:34:48 271

原创 C++11---智能指针

智能指针1. 为什么引入智能指针?1.1 内存泄漏2.智能指针的使用及原理2.1 RAII2.2 智能指针的原理3. C++98- - -auto_ptr4. unique_ptr5. shared_ptr5.1 循环引用6. weak_ptr1. 为什么引入智能指针?void Func(){ vector<int*> v; int* p = new int; v.push_back(p); //因为push_back的时候有可能需要申请空间,但是万一申请内存失败了怎么办 v.a

2021-07-31 15:07:11 1486 9

原创 网络编程---I/O多路转接之epoll

I/O多路转接之epoll一级目录二级目录三级目录I/O多路转接之select链接: link.一级目录二级目录三级目录

2021-07-24 23:54:07 271 1

原创 网络编程---I/O多路转接之poll

I/O多路转接之poll1. Poll函数接口2. 使用poll监控标准输入3. poll的优缺点I/O多路转接之select链接: link.解决了select的两个问题poll能等待的文件描述符是没有上限的poll不需要在每次调用的时候,都进行重新设置1. Poll函数接口#include <poll.h>int poll(struct pollfd *fds, nfds_t nfds, int timeout);pollfd结构struct pollfd {int

2021-07-23 14:57:04 223

原创 网络编程---I/O多路转接之select

高级IO1. 五种IO模型二级目录三级目录1. 五种IO模型二级目录三级目录

2021-07-22 19:24:26 261 1

原创 C++11---右值引用和Lambda表达式

右值引用1. 右值引用2. 为什么要引入右值引用?1. 右值引用C++98中提出了引用的概念,引用即别名,引用变量与其引用实体公共同一块内存空间,而引用的底层是通过指针来实现的,因此使用引用,可以提高程序的可读性。为了提高程序运行效率,C++11中引入了右值引用,右值引用也是别名,但其只能对右值引用。左值(原来所接触的引用):可以放到 “=” 左边的值一般就是可修改的值右值:一般是不可以修改的一些值。比如:常量、临时变量、返回值#include<iostream>using na

2021-07-22 12:13:24 492 1

原创 哈希的应用

这里写目录标题一级目录二级目录三级目录一级目录二级目录三级目录

2021-07-15 16:29:05 293

原创 网络层---IP协议

IP协议1. IP协议报头1.1 分片和组装1.2 硬件设备2. 网段划分2.1 特殊的IP地址2.2 IP地址的数量限制3. 私有IP地址和公网IP地址4. 路由5. 重要的协议5.1 DNS(域名解析)5.2 ICMP协议5.3 NAT技术(重要)IP给通信双方提供了一种能力:将数据从A主机跨网络传输到B主机的能力。1. IP协议报头4位版本号(version): 指定IP协议的版本, 对于IPv4来说, 就是4.4位首部长度(header length): IP头部的长度是多少个32bit

2021-07-14 09:51:00 919

原创 数据链路层详解

数据链路层1. 局域网2. 以太网协议1.1 以太网帧格式2. MAC地址2.1 对比理解MAC地址和IP地址3. MTU(最大传输单元)3.1 MTU对IP协议的影响3.2 MTU对UDP协议的影响3.3 MTU对于TCP协议的影响4. ARP协议4.1 ARP数据报的格式上一节所说IP地址提供了一种能力:能够将数据跨网络从A主机到B主机,但是这是一种更为宏观的说法。事实上从A主机到B主机之前是不是应该先经过一个个的路由器(结点),真正做事干活的是数据链路层中的mac帧地址。1. 局域网这是一个局

2021-07-13 20:30:21 1068 1

原创 定长内存池实现

~ObjectPool() { // } //此时代码还存一个很大的问题:我们默认这里取的是前四个字节,但是在64位的平台下,需要取的应该是这块小内存的前8个字节来保存地址 void*& Nextobj(void* obj) { return *((void**)obj); //对于返回的void*可以自动的适配平台 } //申请内存的函数接口 T* New() { T* obj = nullptr; //一上来首先应该判断freeList if (_free.

2021-06-30 10:24:03 332 1

原创 LRU Cache

LRU Cache1. 什么是LRU Cache2. LRU Cache的实现1. 什么是LRU CacheLRU是Least Recently Used的缩写,意思是最近最少使用,它是一种Cache替换算法。 什么是Cache?狭义的Cache指的是位于CPU和主存间的快速RAM, 通常它不像系统主存那样使用DRAM技术,而使用昂贵但较快速的SRAM技术。 广义上的Cache指的是位于速度相差较大的两种硬件之间, 用于协调两者数据传输速度差异的结构。除了CPU与主存之间有Cache, 内存与硬盘之间也

2021-06-28 17:45:01 480

原创 数据结构---并查集

并查集1. 并查集原理2. 并查集实现3. 并查集应用1. 并查集原理在一些应用问题中,需要将n个不同的元素划分成一些不相交的集合。开始时,每个元素自成一个单元素集合,然后按一定的规律将归于同一组元素的集合合并。在此过程中要反复用到查询某一个元素归属于那个集合的运算。适合于描述这类问题的抽象数据类型称为并查集(union-find set)。一个值或者多个值可以认为是一个集合;并查集是使用一棵树来表示一个集合;并查集的本质是由多棵树构成的森林;便于理解并查集:比如:某公司今年校招全国总共招

2021-06-28 14:38:06 198 1

原创 数据结构---哈希(Hash)

哈希1. 哈希概念2. 哈希函数3. 哈希冲突3.1 闭散列3.1.1 闭散列模拟实现3.2 开散列3.2.1 开散列模拟实现4. 基于开散列实现unordered_set5. 基于开散列实现unordered_map6. 闭散列和开散列对比7. 哈希的应用7.1 位图对于set和map来说底层所使用的是红黑树,其在搜索上面已经很厉害了,为什么还需要在搞一个unordered_set和unordered_map呢?#include<iostream>#include<vector&g

2021-06-19 18:55:04 4205 1

原创 底层实现set和map

底层实现set和map1. 改进红黑树2. 对于set模拟封装3. 对于map模拟封装1. 改进红黑树通过STL可以得到,对于set和map的实现底层所使用的的都是红黑树,所以这里比较难得是对模板的使用。#pragma onceenum Color{ RED, BLACK};template<class T>struct RBTreeNode{ RBTreeNode<T>* _left; RBTreeNode<T>* _right; RBT

2021-06-16 19:47:00 320

空空如也

空空如也

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

TA关注的人

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