- 博客(82)
- 资源 (1)
- 收藏
- 关注
转载 4. 寻找两个正序数组的中位数
这道题让我们求两个有序数组的中位数,而且限制了时间复杂度为O(log (m+n)),看到这个时间复杂度,自然而然的想到了应该使用二分查找法来求解。那么回顾一下中位数的定义,如果某个有序数组长度是奇数,那么其中位数就是最中间那个,如果是偶数,那么就是最中间两个数字的平均值。这里对于两个有序数组也是一样的,假设两个有序数组的长度分别为m和n,由于两个数组长度之和 m+n 的奇偶不确定,因此需要分情况来讨论,对于奇数的情况,直接找到最中间的数即可,偶数的话需要求最中间两个数的平均值。为了简化代码,不分情况讨论,我
2021-06-23 10:12:34
471
原创 剑指 Offer 62. 圆圈中最后剩下的数字
最后只剩下一个元素,假设这个最后存活的元素为 num, 这个元素最终的的下标一定是0 (因为最后只剩这一个元素),所以如果我们可以推出上一轮次中这个num的下标,然后根据上一轮num的下标推断出上上一轮num的下标,直到推断出元素个数为n的那一轮num的下标,那我们就可以根据这个下标获取到最终的元素了。推断过程如下:首先最后一轮中num的下标一定是0, 这个是已知的。那上一轮应该是有两个元素,此轮次中 num 的下标为 (0 + m)%n = (0+3)%2 = 1; 说明这一轮删除之前num的下标
2021-06-13 19:54:04
139
原创 知识点补充
1.浅复制和深复制有什么区别在有指针的情况下,浅拷贝只是增加了一个指针指向已经存在的内存,而深拷贝就是增加一个指针并且申请一个新的内存,使这个增加的指针指向这个新的内存,采用深拷贝的情况下,释放内存的时候就不会出现在浅拷贝时重复释放同一内存的错误.2.端口复用,一个端口可以被其他进程使用①为什么要有这个端口复用呢 因为在服务端结束后,也就是第三次挥手的时候会有个等待释放时间,这个时间段大概是1-4分钟, 在这个时间内,端口不会迅速的被释放,所以可通过端口复用的方法来解决这个问题。
2021-05-27 19:58:33
496
原创 数据库技术
1.int(M) 在 integer 数据类型中,M 表示最大显示宽度。在 int(M) 中,M 的值跟 int(M) 所占多少存储空间并无任何关系。 int(3)、int(4)、int(8) 在磁盘上都是占用 4 btyes 的存储空间。说白了,除了显示给用户的方式有点不同外,int(M) 跟 int 数据类型是相同的。int(10)表示的是数据显示的长度为10位。2.mysql四种隔离状态Read Uncommitted(读未提交):最低的隔离级别,一个事务可以读到另一个事务未提交的结果。所有的并
2021-05-26 20:56:32
1807
1
原创 日志备份
#include <iostream>#include <fstream>#include <ctime>#include <cstring>#include <vector>#include <deque>//#include <queue>#include <thread>#include <algorithm>#include <unordered_set>#in
2021-05-19 17:03:24
395
原创 c++ 对象初始化时编译器的优化
#include <stdio.h> class Test{ int mi;public: Test(int i) { printf("Test(int i):%d\n", i); mi = i; } Test(const Test& t) { printf("Test(const Test& t):%d\n", t.mi); mi = t.mi; } Test
2021-05-17 21:12:09
135
原创 计算机网络
计算机网路1.OSI七层模型和TCP/IP四层模型,每层列举2个协议OSI七层模型及其包含的协议如下:应用层: 为应用程序提供服务,并规定应用程序中通信相关细节。,传输单位为APDU,主要包括的协议为FTP(文件传输协议) HTTP(超文本传输协议)、 DNS(域名系统)表示层: 对数据进行格式转化(主机特有的格式转化为网络标准传输格式)、加密和压缩,传输单位为PPDU,主要包括的协议为TIFF,GIF,JPEG,PICT,ASCII,EBCDIC,encryption会话层:通信管理。负责建立、
2021-05-10 19:23:51
531
1
转载 std::enable_if 的几种用法
https://yixinglu.gitlab.io/enable_if.htmlstd::enable_if 的几种用法tech 12cpp 2std::enable_if 顾名思义,满足条件时类型有效。作为选择类型的小工具,其广泛的应用在 C++ 的模板元编程(meta programming)中。它的定义也异常的简单:template <bool, typename T=void>struct enable_if {};template struct enable_if&l
2021-04-27 16:24:08
582
原创 c++基础
C++基础1.static关键字的作用①全局静态变量:存放于静态存储区,在程序整个运行期间都不释放。只能作用于本文件,不能被其他文件引用。②局部静态变量:存放于静态存储区,在程序整个运行期间都不释放。作用域仍为局部作用域(即定义它的函数或者语句块)。当离开作用域后,并没有销毁,直到再次被调用。③静态数据成员:可以实现多个对象之间的数据共享,并且静态成员是类的所有对象中共享的成员,而不是某个对象的成员,只能在类外进行初始化。可以通过类名或对象名调用。并且只要在类中指定静态数据成员,即使不定义对象,也会
2021-04-19 20:11:45
189
原创 操作系统
操作系统1.程序、进程与线程程序是一组有序指令的集合,进程是程序的一次执行,是一个程序及其数据在处理机上顺序执行时所发生的活动。进程是对运行时程序的封装,是系统进行调度和资源分配的的基本单位,实现了操作系统的并发。(进程就是运行着的程序)线程是进程的子任务,是系统调度和分派的基本单位,用于保证程序的实时性,实现进程内部的并发。线程是操作系统可识别的最小执行和调度单位。每个线程都独自占用一个虚拟处理器:独自的寄存器组,指令计数器和处理器状态。每个线...
2021-04-19 20:06:17
1053
原创 c++知识点
1.join()方法是Thread类中的一个方法,该方法的定义是等待该线程终止。其实就是join()方法将挂起调用线程的执行,直到被调用的对象完成它的执行。thread::join(): 阻塞当前线程,直至 *this 所标识的线程完成其执行。*this 所标识的线程的完成同步于从 join() 的成功返回。该方法简单暴力,主线程等待子进程期间什么都不能做。thread::join()会清理子线程相关的内存空间,此后thread object将不再和这个子线程相关了,即thread object不再joi
2021-03-18 12:01:43
89
原创 左值和右值
https://www.jianshu.com/p/94b0221f64a5https://www.jianshu.com/p/31cea1b6ee24
2020-10-16 16:17:36
102
原创 template、enable_if相关知识
1.https://www.cnblogs.com/yangxiaoping/p/8268209.html2.https://ouuan.github.io/post/c-11-enable-if-%E7%9A%84%E4%BD%BF%E7%94%A8/
2020-10-15 20:19:24
284
转载 正则表达式例子
#include "regex.hpp"#include <regex>#include <string>#include <vector>#include <iostream> int test_regex_match(){ std::string pattern{ "\\d{3}-\\d{8}|\\d{4}-\\d{7}" }; // fixed telephone std::regex re(pattern); std::vect
2020-08-03 20:56:38
173
原创 反射注册类
#include <string>#include <map>#include <iostream>using namespace std;typedef void* (*Constructor)();class CObjectFactory{public: static void registerClass(std::string className, Constructor constructor) { construc.
2020-07-22 18:19:06
180
转载 fork()、pipe()、dup2() 和 execlp() 的组合技法
void cgi_run(const char* filename){ char buffer[1024] = { 0 }; int len; int pfd[2]; int status; pid_t pid; /* create pipe */ if (pipe(pfd)<0) return -1; /* fork to execute external program or scripts */ pi
2020-07-21 10:02:22
574
转载 google gflags 使用方法、解析命令行参数
https://blog.youkuaiyun.com/weixin_30876945/article/details/94924058?utm_medium=distribute.pc_relevant_right.none-task-blog-BlogCommendFromMachineLearnPai2-5.nonecase&depth_1-utm_source=distribute.pc_relevant_right.none-task-blog-BlogCommendFromMachineLearnP
2020-05-18 22:05:58
343
原创 vs配置gflags
https://blog.youkuaiyun.com/qq229873466/article/details/53571623https://blog.youkuaiyun.com/maweifei/article/details/809256681.cmake要下载msi文件,直接可以安装2.图片里的方框要全打上勾,否则编译不出想要的文件3.打完勾之后点击Open Project4.点击生成解决方案...
2020-05-17 13:31:53
554
转载 怎么使用std::bind
https://blog.youkuaiyun.com/u013654125/article/details/100140328https://www.jianshu.com/p/f191e88dcc80std::bind将可调用对象与其参数一起进行绑定,绑定后的结果可以使用std::function保存。std::bind主要有以下两个作用:1.将可调用对象和其参数绑定成一个防函数;2.只绑定部分参数,减少可调用对象传入的参数。《C++11中的std::function》中那段代码,std::functi
2020-05-13 23:15:25
787
1
转载 #ifdef
https://baike.baidu.com/item/%23ifdef/2834634?fr=aladdin宏是为了进行条件编译。一般情况下,源程序中所有的行都参加编译。但是有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部分内容指定编译的条件,这就是“条件编译”。有时,希望当满足某条件时对一组语句进行编译,而当条件不满足时则编译另一组语句。...
2020-05-13 21:08:10
681
转载 C++中typename关键字的使用方法和注意事项
https://blog.youkuaiyun.com/vanturman/article/details/80269081目录起因typename的常见用法typename的来源一些关键概念限定名和非限定名依赖名和非依赖名类作用域引入typename的真实原因一个例子问题浮现千呼万唤始出来不同编译器对错误情况的处理使用typename的规则其它例子再看常见用法参考写在结尾起因近日,看到这样一行代码:typedef typename __type_traits::has_tri
2020-05-13 17:30:00
767
转载 Lambda函数
转自 https://blog.youkuaiyun.com/u010984552/article/details/53634513?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCo...
2020-05-07 20:37:24
414
转载 C++编程中的std::function函数封装
std::function介绍类模版std::function是一种通用、多态的函数封装。std::function的实例可以对任何可以调用的目标实体进行存储、复制、和调用操作,这些目标实体包括普通函数、Lambda表达式、函数指针、以及其它函数对象等。std::function对象是对C++中现有的可调用实体的一种类型安全的包裹(我们知道像函数指针这类可调用实体,是类型不安全的)。通常std...
2020-05-07 10:25:01
701
原创 几百行代码实现的modern c++ rpc library
https://github.com/button-chen/buttonrpc_cpp14https://www.bilibili.com/video/BV1Qc411877H?from=search&seid=14636954250232322376简单的rpc,便于入门理解
2020-05-04 16:44:46
325
转载 ZeroMQ+VS2015配置
转自http://www.itkeyword.com/doc/0166008402358244691/visual%20studio%202010-ZeroMQ1.从https://github.com/button-chen/buttonrpc_cpp14下载build-vs20152. 在:计算机->属性->系统设置->环境变量->Path中,添加路径:D:\Ze...
2020-05-04 16:42:45
620
原创 114. 二叉树展开为链表
给定一个二叉树,原地将它展开为链表。例如,给定二叉树1/ 2 5/ \ 3 4 6将其展开为:123456/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *...
2019-08-20 17:06:04
110
原创 多个大整数相加
可以将所有数读入并反转存在vector<vector> v中,再建一个vector v2;保存所有数第1位的和。。。。。第n位的和。然后遍历v2,将v2[i]/10加到v[i+1】中。这样只需进行一遍进位操作。比一个一个相加快很多...
2019-08-20 17:04:46
241
原创 栈的应用
链接:https://www.nowcoder.com/questionTerminal/e6e57ef2771541dfa2f1720e50bebc9a来源:牛客网给定一个数组序列, 需要求选出一个区间, 使得该区间是所有区间中经过如下计算的值最大的一个:区间中的最小数 * 区间所有数的和最后程序输出经过计算后的最大值即可,不需要输出具体的区间。如给定序列 [6 2 1]则根据上述公式,...
2019-08-06 17:18:21
100
转载 STL源码剖析---空间配置器
转自https://blog.youkuaiyun.com/hackbuteer1/article/details/7724534看过STL空间配置器的源码,总结一下:1、STL空间配置器:主要分三个文件实现,stl_construct.h 这里定义了全局函数construct()和destroy(),负责对象的构造和析构。stl_alloc.h文件中定义了一、二两级配置器,彼此合作,配置器名为allo...
2019-07-22 15:16:06
110
原创 887. 鸡蛋掉落
你将获得 K 个鸡蛋,并可以使用一栋从 1 到 N 共有 N 层楼的建筑。每个蛋的功能都是一样的,如果一个蛋碎了,你就不能再把它掉下去。你知道存在楼层 F ,满足 0 <= F <= N 任何从高于 F 的楼层落下的鸡蛋都会碎,从 F 楼层或比它低的楼层落下的鸡蛋都不会破。每次移动,你可以取一个鸡蛋(如果你有完整的鸡蛋)并把它从任一楼层 X 扔下(满足 1 <= X &l...
2019-07-01 11:43:56
189
原创 329. 矩阵中的最长递增路径
给定一个整数矩阵,找出最长递增路径的长度。对于每个单元格,你可以往上,下,左,右四个方向移动。 你不能在对角线方向上移动或移动到边界外(即不允许环绕)。示例 1:输入: nums =[[9,9,4],[6,6,8],[2,1,1]]输出: 4解释: 最长递增路径为 [1, 2, 6, 9]。dfs+记忆矩阵(保存以该点位起点的最长路径) 44msclass Soluti...
2019-06-29 11:09:45
332
原创 995. K 连续位的最小翻转次数
在仅包含 0 和 1 的数组 A 中,一次 K 位翻转包括选择一个长度为 K 的(连续)子数组,同时将子数组中的每个 0 更改为 1,而每个 1 更改为 0。返回所需的 K 位翻转的次数,以便数组没有值为 0 的元素。如果不可能,返回 -1。输入:A = [0,0,0,1,0,1,1,0], K = 3输出:3解释:翻转 A[0],A[1],A[2]: A变成 [1,1,1,1,0,1,...
2019-06-28 16:15:43
338
原创 928. 尽量减少恶意软件的传播 II
(这个问题与 尽量减少恶意软件的传播 是一样的,不同之处用粗体表示。)在节点网络中,只有当 graph[i][j] = 1 时,每个节点 i 能够直接连接到另一个节点 j。一些节点 initial 最初被恶意软件感染。只要两个节点直接连接,且其中至少一个节点受到恶意软件的感染,那么两个节点都将被恶意软件感染。这种恶意软件的传播将继续,直到没有更多的节点可以被这种方式感染。假设 M(initi...
2019-06-27 11:53:47
283
转载 C++内存管理
转自 https://blog.youkuaiyun.com/caogenwangbaoqiang/article/details/79788368[导语]内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能,更大的自由,C++菜鸟的收获则是一遍一遍的检查代码和对C++的痛恨,但内存管理在C++中无处不在,内存泄漏几乎在每个C++程序中都会发生,因此要想成为C+...
2019-06-25 17:25:06
186
原创 1044. 最长重复子串
给出一个字符串 S,考虑其所有重复子串(S 的连续子串,出现两次或多次,可能会有重叠)。返回任何具有最长可能长度的重复子串。(如果 S 不含重复子串,那么答案为 “”。)示例 1:输入:“banana”输出:“ana”示例 2:输入:“abcd”输出:""提示:2 <= S.length <= 10^5S 由小写英文字母组成。二分法+滚动哈希 1344mscl...
2019-06-22 19:50:07
2816
转载 Rabin-Karp算法
Rabin-Karp算法Rabin-Karp算法用来解决一个"简单"的问题: 在一个字符串中定位子串的位置.同样的算法还有: KMP, BM. 关于他两可以再看看这位老哥写的文章:白话分析字符串匹配算法——KMP算法乍一看这个问题一个for循环就能搞定, 但Rabin-Karp这个神奇的算法能让问题解决得更高效 有趣.在了解Rabin-Karp之前,我们需要了解for暴力算法的缺点。暴力...
2019-06-22 19:48:31
1350
原创 432. 全 O(1) 的数据结构
实现一个数据结构支持以下操作:Inc(key) - 插入一个新的值为 1 的 key。或者使一个存在的 key 增加一,保证 key 不为空字符串。Dec(key) - 如果这个 key 的值是 1,那么把他从数据结构中移除掉。否者使一个存在的 key 值减一。如果这个 key 不存在,这个函数不做任何事情。key 保证不为空字符串。GetMaxKey() - 返回 key 中值最大的任意一...
2019-06-21 14:50:08
591
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人