自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 编辑距离

编辑距离给定两个单词 word1 和 word2,计算出将 word1 转换成 word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作:插入一个字符删除一个字符替换一个字符示例 1:输入: word1 = "horse", word2 = "ros"输出: 3解释: horse -> rorse (将 'h' 替换为 'r')rorse -> ros...

2020-02-29 22:05:57 555

原创 最长上升子序列

最长上升子序列给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。说明:可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。你算法的时间复杂度应该为 O(n2) 进阶: 你能将算法的时间复杂度降低到 O(n log n) 吗?方...

2020-02-29 17:39:56 743

原创 二分查找详解

二分查找详解

2020-02-29 17:38:50 554

原创 凑零钱问题

凑零钱问题给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。示例 1:输入: coins = [1, 2, 5], amount = 11输出: 3 解释: 11 = 5 + 5 + 1示例 2:输入: coins = [2], amount = 3输出: -1说明...

2020-02-28 17:38:52 1440

原创 通配符匹配

通配符匹配给定一个字符串 (s) 和一个字符模式 § ,实现一个支持 ‘?’ 和 ‘*’ 的通配符匹配。‘?’ 可以匹配任何单个字符。‘*’ 可以匹配任意字符串(包括空字符串)。两个字符串完全匹配才算匹配成功。说明:s 可能为空,且只包含从 a-z 的小写字母。p 可能为空,且只包含从 a-z 的小写字母,以及字符 ? 和 *。示例 1:输入:s = "aa"p = ...

2020-02-25 18:05:56 584

原创 公交路线

公交路线我们有一系列公交路线。每一条路线 routes[i] 上都有一辆公交车在上面循环行驶。例如,有一条路线 routes[0] = [1, 5, 7],表示第一辆 (下标为0) 公交车会一直按照 1->5->7->1->5->7->1->… 的车站路线行驶。假设我们从 S 车站开始(初始时不在公交车上),要去往 T 站。 期间仅可乘坐公交车,求出最...

2020-02-25 17:52:54 774

原创 矩阵中的最长递增路径

矩阵中的最长递增路径给定一个整数矩阵,找出最长递增路径的长度。对于每个单元格,你可以往上,下,左,右四个方向移动。 你不能在对角线方向上移动或移动到边界外(即不允许环绕)。示例 1:输入: nums = [ [9,9,4], [6,6,8], [2,1,1]] 输出: 4 解释: 最长递增路径为 [1, 2, 6, 9]。示例 2:输入: nums = [ ...

2020-02-25 15:45:17 1172

原创 给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)

给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)题目:给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], []]方法一:递归c...

2020-02-25 12:47:57 4039 1

原创 用位运算计算两数的和

用位运算计算两数的和//方法一://sum为计算结果//carry为进位int bitAdd(int a, int b){ if (b == 0)//当进位为0的时候,就可以返回了 return a; int sum = a ^ b;//计算a和b中不同时为1的位之和,剩下的 //就是a和b中同时位1的情况 int carry = (a&b) << 1;/...

2020-02-17 15:45:40 1578

原创 IO多路转接之epoll

IO多路转接之epoll一、epool是为处理大批量句柄而作了改进的pol1.相关函数a.int epoll_create(int size);创建一个epoll的句柄.自从linux2.6.8之后,size参数是被忽略的.用完之后, 必须调用close()关闭官方的讲:创建一个epoll的句柄其实呢,它是创建了一个epoll模型: 1. 在操作系统内核构建一个红黑树...

2020-02-15 10:34:35 1662 1

原创 IO多路转接之poll

IO多路转接之poll一、Poll1.函数原型:int poll(struct pollfd *fds, nfds_t nfds, int timeout);参数作用struct pollfd *fdsfds是一个poll函数监听的结构列表. 每一个元素中, 包含了三部分内容: 文件描述符, 监听的事件集合, 返回的事件集合nfds_t nfdsnfds表示...

2020-02-14 21:06:04 1442

原创 I/O多路转接之select

I/O多路转接之select一、五种IO模型阻塞IO: 在内核将数据准备好之前, 系统调用会一直等待. 所有的套接字, 默认都是阻塞方式非阻塞IO: 如果内核还未将数据准备好, 系统调用仍然会直接返回, 并且返回EWOULDBLOCK错误码.非阻塞IO往往需要程序员循环的方式反复尝试读写文件描述符, 这个过程称为轮询. 这对CPU来说是较大的浪费3. 信号驱动IO: 内核将...

2020-02-14 19:29:41 569

原创 网络基础(三)

网络基础(三)一、IP协议1.基本概念主机:配有IP地址, 但是不进行路由控制的设备;路由器: 即配有IP地址, 又能进行路由控制;节点: 主机和路由器的统称;2.协议头格式4位版本号(version): 指定IP协议的版本, 对于IPv4来说, 就是4.4位头部长度(header length): IP头部的长度是多少个32bit, 也就是 length * 4 的字节...

2020-02-14 14:50:46 1659

原创 网络基础(二)及HTTP协议

网络基础(二)及HTTP协议一、HTTP协议1 . 什么是url?平时我们俗称的 “网址” 其实就是说的 URL2.http协议的格式http请求:首行: [方法] + [url] + [版本]Header: 请求的属性, 冒号分割的键值对;每组属性之间使用\n分隔;遇到空行表示Header部分结束空行Body: 空行后面的内容都是Body. Body允许为空字符串. 如果B...

2020-02-12 18:43:15 2619

原创 TCP协议通讯流程(三次握手及四次挥手)

TCP协议通讯流程(三次握手及四次挥手)一、服务器端:调用socket函数,创建一个socket(文件描述符)操作句柄调用bind函数,把刚创建的socket文件描述符 和 ip及端口 绑定在一起,注意一个进程可以绑定多个端口号,但是一个端口号只能被一个进程绑定bind中进程和端口的关系调用listen函数,对socket文件描述符进行监听(首先listen会在进程地址空间中维护一个缓冲...

2020-02-12 15:09:12 1606

原创 网络编程套接字(四)

网络编程套接字(四)一、实现tcp服务器多用户版本(多进程、多线程、线程池版本)tcp_process_server.hpp#pragma once#include "tcp_socket.hpp"#include <functional>#include <signal.h>typedef std::function<void (const st...

2020-02-11 21:19:58 598

原创 网络编程套接字(三)

网络编程套接字(三)一、实现简单的Tcp服务器(单用户)tcp_socket.hpp#pragma once#include <cstdio>#include <cstdlib>#include <cstring>#include <cassert>#include <string>#include <uni...

2020-02-11 15:21:12 1961

原创 网络编程套接字(二)

网络编程套接字(二)

2020-02-11 12:15:44 1592

原创 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)

求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)第一种方法:class assist{public: assist() {N++;sum += N;} static void reset(){N=0;sum=0;}//在VS中不需要此调用函数也可以(不进行多加一次) static...

2020-02-10 19:22:42 2044 2

原创 AVL树

AVL树一、AVL树1 . AVL树的概念二叉搜索树虽可以缩短查找的效率,但如果数据有序或接近有序二叉搜索树将退化为单支树,查找元素相当于在顺序表中搜索元素,效率低下。因此,两位俄罗斯的数学家G.M.Adelson-Velskii和E.M.Landis在1962年发明了一种解决上述问题的方法:当向二叉搜索树中插入新结点后,如果能**保证每个结点的左右子树高度之差的绝对值不超过1(**需要...

2020-02-10 18:47:08 557

原创 二叉搜索树

二叉搜索树一、 二叉搜索树的概念二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树:若它的左子树不为空,则左子树上所有节点的值都小于根节点的值若它的右子树不为空,则右子树上所有节点的值都大于根节点的值它的左右子树也分别为二叉搜索树二、 二叉搜索树操作二叉搜索树的查找2.二叉搜索树的插入3.二叉树的删除首先查找元素是否在二叉搜索树中,如果不存在,...

2020-02-10 18:46:21 2065 3

原创 C++中的deque、stack、queue及priority_queue

C++中的deque、stack及queue一、deque1.1 . deque的介绍deque(发音类似“deck”),是双端队列不规则的首字母缩写,双端队列是动态大小的序列式容器,其可以像两端进行伸缩。特定的库可以以不同的方式实现deque,但通常都是一种动态数组。不论在何种情况下,它都允许通过随机访问迭代器直接访问单个元素,可以根据需要动态的伸缩。因此,deque提供了一些与...

2020-02-10 17:48:49 1813

原创 C++中的list

C++中的list一、list简介list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。list与forward_list非常相似:最主要的不同在于forward_list是单链表,只能朝前迭代,已让其更简单高效。与其他的序...

2020-02-10 16:56:32 3478

原创 C++中的vector

C++中的vector一、vector简介vector是表示可变大小数组的序列容器。就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。本质讲,vector使用动态分配数组来存储它的元素。当新元素插入时候,这个数组需要被重新分配大小为了...

2020-02-10 16:29:48 1689

原创 C++中的STL

C++中的STL一、什么是STL1.STL(standard template libaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架2.STL的发展史原始版本Alexander Stepanov、Meng Lee 在惠普实验室完成的原始版本,本着开源精神,他们声明允许任何人任意运用、拷贝、修改、传播、商业使用这...

2020-02-10 15:54:52 1588

原创 C++中的模版

C++中的模版一:范型编程1.什么是范型编程?泛型编程:编写与类型无关的通用代码,是代码复用的一种手段。模板是泛型编程的基础如何实现一个通用的交换函数呢?void Swap(int& left, int& right){int temp = left;left = right;right = temp;}void Swap(double& le...

2020-02-10 14:57:09 1685

空空如也

空空如也

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

TA关注的人

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