自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(71)
  • 问答 (5)
  • 收藏
  • 关注

原创 在两个排序数组中找第k小的数

题目描述给定两个有序数组arr1和arr2,再给定一个整数K,返回所有数中第K小的数。[要求]如果arr1的长度为N,arr2的长度为M,时间复杂度请达到O(\log(\min{N, M}))O(log(minN,M)),额外空间复杂度O(1)O(1)。输入描述:第一行三个整数N, M, K分别表示数组arr1, arr2的大小,以及需要询问的数接下来一行N个整数,表示arr1内的元...

2020-04-15 21:32:42 1091

原创 leetcode 239 Sliding Window Maximum

Given an array nums, there is a sliding window of size k which is moving from the very left of the array to the very right. You can only see the k numbers in the window. Each time the sliding window...

2020-03-30 20:59:48 215

原创 最长递增子序列问题

题目描述给定数组arr,设长度为n,输出arr的最长递增子序列。(如果有多个答案,请输出其中字典序最小的)输入描述:输出两行,第一行包括一个正整数n(n<=100000),代表数组长度。第二行包括n个整数,代表数组arr \left(1 \leq arr_i \leq 1e9 \right)(1≤arri​≤1e9)。输出描述:输出一行。代表你求出的最长的递增子序列。...

2020-02-25 15:56:45 2010 1

转载 LCA(lowest common ancestor)并查集解法

首先是最近公共祖先的概念(什么是最近公共祖先?):    在一棵没有环的树上,每个节点肯定有其父亲节点和祖先节点,而最近公共祖先,就是两个节点在这棵树上深度最大的公共的祖先节点。    换句话说,就是两个点在这棵树上距离最近的公共祖先节点。    所以LCA主要是用来处理当两个点仅有唯一一条确定的最短路径时的路径。    有人可能会问:那他本身或者其父亲节点是否可以作为祖先节点呢?...

2020-02-23 22:18:57 713 1

转载 Alignment

One of the low-level features of C++ is the ability to specify the precise alignment of objects in memory to take maximum advantage of a specific hardware architecture. By default, the compiler aligns...

2020-01-19 18:27:16 511

转载 Golang package versions between plugins and main applications

QUESTION:I'm not a Go expert, so I may be doing this in a way that is not the ideal approach for Go. Essentially, I have a main application that needs to be able to have plugins written for it. The ...

2019-12-09 18:59:49 185

转载 How Interfaces Work in Go

This article will introduce the internal implementation of interface types by the official Go compiler.The explanations in this article aren't precisely in accordance with the official Go compiler a...

2019-12-08 22:30:52 214

原创 golang slice作为函数参数应注意的问题

表面上看,slice作为参数的时候传递的是引用,在函数中对slice的修改在函数返回以后才能看到。但是其实,golang里面所有的参数传递都是传值,slice也不例外,只不过slice的值是一个header,slice传值传的是SliceHeader:type SliceHeader struct { Data uintptr Len int Cap int}...

2019-12-05 14:23:21 782 1

原创 记录百度2020校园招聘(C++/PHP岗)

Round1江湖规矩,自我介绍,聊项目。动态库,静态库,区别,优缺点进程、线程、协程区别(问协程应该是我简历里写了用过golang)。说一说进程调度,抢占和非抢占哪个系统开销大。线程调度和进程调度区别联系。MySQL,Innodb和Myisam,B树和B+树Linux常用命令,内存管理,分页机制,常见的系统调用,VFS,AWK命令HTTP,有状态和无状态。多路复用,sele...

2019-09-23 13:00:12 505

原创 golang 实现无域名的HTTPS服务器

场景是这样子的:我们有一个自己搭建的CA来签发证书,CA给我们的服务器签发证书.现在整个产品还处于内部开发阶段,服务器只有一个内网IP,没有域名.搭建WEB服务使用了go语言的echo库.那么会遇到这样的一个问题:一般来说,服务器的证书common name字段都是服务器的host name/domain name,但是在我们的这个场景下,服务器只有IP,如果服务器证书的common name...

2019-08-08 18:16:35 1755

原创 记录字节跳动2020校招提前批面试

Round1:先自我介绍,然后聊了聊项目。问题基本由浅入深。1、说说从浏览器输入URL到加载出网页的基本过程。2、网络协议栈3、HTTP状态码4、TCP三次握手,四次挥手5、四次挥手过程中TIME_WAIT状态。6、如果TCP连接只有两次握手会有什么问题?我答如果服务端的ACK报文丢失,服务端已经打开的socket,但是client端以为服务器不可达,造成服务端的s...

2019-08-08 10:27:29 2386

原创 leetcode152 Maximum Product Subarray

求子数组的最大积.我一开始联想到的是子数组的最大和,动态规划经典题目,但是这道题好像不能用DP来解.我采用的是一种很直观的解法,求子数组最大积的时候,最特殊的就是0,0乘任何数都等于0.所以,假设有这样的一个数组1,4,-5,9,-3,-4,0,1,-4,9,7,-30把这个数组分成了两个子数组,则最大积就是这两个子数组最大积的最大值(大多数情况下是,暂时不考虑特殊边界条件).所以...

2019-07-23 15:00:08 176

翻译 c++核心:小心条件变量的陷阱

原文:http://www.modernescpp.com/index.php/c-core-guidelines-be-aware-of-the-traps-of-condition-variables条件变量支持一个很简单的功能,一个线程准备好数据,然后向另外一个线程发送通知,通知另一个线程处理这些数据.为什么有可能会很危险呢?不要无条件等待有这样的一个规则:一个没有条件(cond...

2019-07-15 11:07:43 1420

翻译 linux平台下使用unix socket连接mysql/MariaDB unix socket路径问题

原文:https://ocelot.ca/blog/blog/2015/07/19/connecting-to-mysql-or-mariadb-with-sockets-on-linux/MySQL手册上面有这样一段话:--socket=file_name, -S file_name ... On Unix, the name of the Unix socket file to us...

2019-07-08 11:51:30 3330

原创 leetcode146 LRU cache Design

第一次写这种类型的程序,感觉挺好玩的.LRU就是 Least Recently Used.LRU Cache就是一种缓存机制,当缓存已经满了的时候,最近最少使用的元素移出缓存换上新的元素.我们采用双向链表来判断最近最少使用的元素.我们保存指向双向链表的所有元素的指针,当访问一个元素的时候,把双向链表中的该元素移动到队尾.即只要使用某个元素,就把该元素移动到队尾,所以队尾是最近最多使用的元素,队...

2019-07-03 10:52:44 261

原创 golang mysql:Error 1046: No database selected陷阱

起源是这个样子的,我的golang程序大致是这样的一个架构:func main(){ db, err = sql.Open("mysql", mysqlUser + ":" + password + "@" + mysqlurl + "/") db.Exec("create database mydatabase") db.Exec("use mydatabase")...

2019-06-25 17:55:32 2783

原创 (代码) 后缀数组+lcp的c++实现

suffix array后缀数组一般用于字符串匹配问题当中,一般来说可以用suffix tree解决的字符串匹配问题用suffix array都可以解决.主要参考了geeksforgeeks上关于后缀数组和lcp(longest common prefix)的教程.https://www.geeksforgeeks.org/suffix-array-set-2-a-nlognlogn-al...

2019-06-24 15:24:42 1389

原创 leetcode124 Binary Tree Maximum Path Sum

题目大意:二叉树的任意一条路径上所有节点求和。求最大路径是多少。我的思路就是分治法。最大路径有三种可能:1、左子树的最大路径。2、右子树的最大路径。3、横跨根节点的最大路径。左子树和右子树的最大路径可以递归求得。关键是横跨根节点的最大路径。我的思路是:求以左子树根节点结尾的最大路径l,再求以右子树根节点结尾的最大路径r。那么横跨根节点的最大路径可以写成:int result=r...

2019-06-17 23:35:39 133

原创 leetcode84. Largest Rectangle in Histogram 分治+线段树

题目大意:输入一个整数数组,每个整数表示一个宽度为1的矩形,相邻整数对应的矩形相邻,求所有矩形的区域里面,围成的面积最大矩形的面积。链接:https://leetcode.com/problems/largest-rectangle-in-histogram/我们以输入[2,1,5,6,2,3]为例。最大的矩形是高度为5的矩形和高度为6的矩形构成的,面积为10。我们可以发现,给定起...

2019-05-27 14:53:29 139

原创 C++ priority_queue用法

以上大多摘自c++官网优先队列是一种容器适配器。它的第一个元素总是包含元素的最大值。优先队列类似于堆,可以随时插入新的元素,只有堆中最大的元素可以被访问(优先队列队首元素)。优先队列属于容器适配器,即优先队列本身也封装了容器,并提供了一些接口来访问成员。优先队列封装的容器必须支持随机访问,并且支持empty(),size(),front(),push_back(),pop_back()...

2019-05-26 21:21:42 1798

原创 c++11的右值引用和移动语义(Move semantics)

最近接触了c++很多的概念,什么拷贝构造函数、移动构造函数、左值、右值、左值引用、右值引用等等,学习的过程好像渡劫,网上的很多博客要么就是介绍的很模糊,要么就是知识点不全。不过好在读过了这篇文章之后https://www.cprogramming.com/c++11/rvalue-references-and-move-semantics-in-c++11.html对于这些概念有了一个较为...

2019-05-15 18:55:47 388

原创 leetcode89 Gray Code

题目大意:输入一个数字n,输出一个整数序列,是n位二进制,每个相邻的数字只有一位二进制位的不同。这道题看过网上的其他的一些解法,什么移位之后再做异或,感觉这种方法实在是太trick了,我根据一些提示用的递归的方法来做首先观察n=2的输出:00,01,11,10接着观察n=3的输出:000,001,011,010,110,111,101,100n=3的输出,前四个元素是最高位为0,不...

2019-05-15 10:06:22 138

原创 leetcode76 Minimum Window Substring滑动窗口

https://leetcode.com/problems/minimum-window-substring/题目大意:给定一个字符串S,和一个字符串T,求S的一个子串,包含T的所有字符,且子串最小。我们应用滑动窗口的思想,首先我们知道包含T的所有字符,最小的子串一定以T的字符开头以T的字符结尾。两个指针l和r,表示滑动窗口的两端,我们举个例子:S="ADOBECODEBANC" ...

2019-05-13 23:18:53 156

原创 学习笔记:C++右值引用

之前阅读C++官方文档的时候,经常看到类似于这样的函数原型:void f(string&& s);之前不知道两个&&是什么意思,还以为是引用的引用,类似于二级指针的东西。。。。。。后来参考了这篇文章https://eli.thegreenplace.net/2011/12/15/understanding-lvalues-and-rvalues-in-...

2019-05-13 14:51:03 128

原创 golang grpc UnaryServerInterceptor用法

有的时候,当进行grpc调用的时候,并不希望客户端与服务端建立连接后直接就进入对应的方法体内。比如需要验证签名来确认客户端的身份,再执行相应的方法。这个时候就可以哟拿到Interceptor。golang grpc的拦截器(Interceptor)为UnaryServerInterceptor,为一个指向函数的指针。UnaryServerInterceptor在服务端对于一次RPC调用进行...

2019-05-08 17:21:09 2427

原创 leetcode 45 Jump Game II Greedy(反证法证明)

题目大意:有一个数组nums,nums[i]表示在下标i上,最多可以向前跳nums[i]个数字,求从下标0到下标nums.size()最少的跳数。我的思路是建立一个辅助的数组steps,steps[i]表示从下标0跳到下标i的最少跳数,显然,steps是一个非递减的数组。我们先把结论给出来:设x是从下标0向后数第一个可以一步跳到i的下标,则steps[i]=steps[x]+1。即从下标0...

2019-04-23 14:15:31 198

翻译 Apache Hadoop HDFS架构

承接上一篇翻译的HDFS的博客。这篇博客翻译自https://www.edureka.co/blog/apache-hadoop-hdfs-architecture/介绍在这篇博客里,我将介绍Apache Hadoop HDFS的架构。如果想熟练掌握Hadoop,HDFS&YARN是两个很重要的概念。在上一篇博客中,你已经知道了HDFS是一个分布式文件系统,部署在廉价的硬件上。...

2019-04-19 15:45:58 374

翻译 HDFS教程:HDFS介绍及特点

最近需要部署hdfs文件系统,于是乎也学习了一些hdfs文件系统。看到一篇觉得还不错的博客,就翻译记录一下吧https://www.edureka.co/blog/hdfs-tutorialHDFS教程在继续学习hdfs之前,我们先来看一组关于HDFS的令人激动的统计数据:2010年的时候,Facebook宣布他们拥有一个最大的HDFS集群,这个集群中存储了21PB的数据 201...

2019-04-18 18:14:00 1039

原创 leetcode44 wildcard matching递推方法+trick方法

通配符匹配。简单来说就是判断字符串s和pattern字符串p是否匹配,p中的?符号表示任意一个字符,p中的*符号表示任意一个字符序列。首先说说我自己的递推的思想:虽然很多人说这种是动态规划的解法,但我本人并不认同这种说法,如果严格按照动态规划的定义划分的话,这个既没有最优子结构也没有重复计算的问题。不过不用在意这些细节了。设一个二维数组bp,bp[i][j]的语义是:s的前i个字符和p...

2019-04-17 21:23:24 147

原创 leetcode 33 Search in Rotated Sorted Array Binary Search

某个有序数组,按照某个枢轴值逆置以后,搜索指定的元素。假设没有重复的元素例如[2,3,4,5,8,9]这个数组,在5和8之间进行逆置,得到了数组nums:[8,9,2,3,4,5],我们在这个数组中搜索某个元素。我的思路很简单:这个数组可以分解成两个子数组:[8,9]和[2,3,4,5],每个子数组都是升序排列,用两次二分查找就好了。那么难点就是如何通过二分查找找到枢轴值pivot=9?...

2019-04-10 14:38:21 159

翻译 linux系统调用dup,dup2,dup3

翻译自Ubuntu下的Linux Programmer's Manual名字:dup,dup2,dup3-复制一个文件描述府。摘要:#include<unistd.h>int dup(int oldfd);int dup2(int oldfd,int newfd);#define _GNU_SOURCE /*见 feature_test_macros(7) ...

2019-04-04 14:34:37 1030

原创 从文件系统的角度看linux 软连接和硬连接

目前linux使用的文件系统为EXT4文件系统,即使用inode存放文件的元数据(例如属性与权限),使用block存放文件的数据,在inode里面存放了指向文件block的指针。属于索引式文件系统。对于linux系统的目录,也有专门的inode和block来存储。有一个目录dir,在目录dir下存放两个文件file1和file2。则dir的inode存放目录的权限信息等其他信息,dir的block...

2019-04-02 21:44:49 225

原创 leetcode 17. Letter Combinations of a Phone Number 深度优先搜索

题目大意就是:手机上的九键建立了一个数字和字母的对应关系,一个数字可能对应多个字母。输入一串数字,每个数字用一个它对应的某个字母代替,这一串数字就转化成了一串字母,输出所有可能的字母。这道题用DFS搜索就可以求解了。以输入“232”为例。2对应a,b,c三个字母。3对应着d,e,f 这三个字母。首先是第一层数字2,第一层为数字2对应的第一个字母a接着到第二层数字3,第二层为数字3对...

2019-04-01 16:52:43 172

转载 C++11 Lambda表达式

C++11的一大亮点就是引入了Lambda表达式。利用Lambda表达式,可以方便的定义和创建匿名函数。对于C++这门语言来说来说,“Lambda表达式”或“匿名函数”这些概念听起来好像很深奥,但很多高级语言在很早以前就已经提供了Lambda表达式的功能,如C#,Python等。今天,我们就来简单介绍一下C++中Lambda表达式的简单使用。声明Lambda表达式Lambda表达式完整的声...

2019-04-01 11:34:10 95

原创 leetcode15 3Sum leetcode16 3SumClosest

两道题大同小异,15题是从一个数组中找到三个数(一个triplet)的和为0,找到所有和为0的triplet,返回一个vector<vector<int>>。这道题我试过brute force是超时的。我最开始的思路是这样的:设数组nums[0] nums[1] ...... nums[n-2] nums[n-1] 首先对数组进行排序操作。在nums[0...

2019-03-25 11:02:10 137

原创 记录遇到过的一个坑:C++基类析构函数写成虚函数

之前写了一个C++的程序,类似于是这样的框架:#include<iostream>using namespace std;class BaseClass{public: virtual void output(){ cout<<"BaseClass"<<endl; }};class DerivedClass:public BaseCl...

2019-03-22 15:23:54 1246

原创 leetcode10 Regular Expression Matching

这道题我光读题就读了很长时间。题意是判断字符串s和p是否匹配,s只含有小写字母,p含有小写字母和'.' '*'两个字符'.' 字符表示任意字符,可以和任意一个字符匹配 '*'表示0个或多个前一个字符,例如a*当中的*表示0个或多个a所以s="aaa" p="a*" 是匹配的,因为*可以转化成2个a。同理s="b" p="ba*"也是匹配的,因为*可以变成0个a。这道题的难点...

2019-03-18 16:29:21 133

原创 学习笔记:mysql索引提升查询效率的底层原理

数据库查询速度慢,很大原因是因为数据存储在磁盘上,而磁盘与内存之间的IO是一项非常耗时的工作,如果没有一个高效的搜索算法,很可能会造成多次磁盘IO,读出了很多盘块后才找到需要查找的数据。而索引是针对这种问题,设计的一种提升数据库查询效率的数据结构,数据库除了要保存的数据之外,会保存索引,借助于这种索引,可以减少磁盘的IO次数。其实索引可以有很多种实现方式,最简单的一种实现方式就是基于二叉排序树...

2019-03-14 10:50:39 916

原创 leetcode94 Binary Tree Inorder Traversal 非递归二叉树中序遍历

中序遍历的定义是:首先中序遍历左子树,接着遍历根节点,最后中序遍历右子树根据这个思路我们就可以试着写出非递归版本的程序。所用的数据结构自然就是栈,首先将根节点入栈,当把左子树中序遍历完了以后,把根节点出栈,再中序遍历右子树。我们定义节点出栈的过程就是遍历该节点,初始状态我们先让根节点入栈。由于我们首先遍历的是左子树,所以我们首先不停地进行栈顶元素左孩子入栈操作,直到栈顶元素没有左...

2019-03-12 14:39:28 141

原创 HDOJ1041 Computer Transformation 递推+大数

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1041题目大意:定义这样的一个转换规则:0-&gt;1 0,1-&gt;0 1。初始只有一个数字1,按照转换规则,第一步之后数字变成01,第二步之后数字编程1001。。。以此类推。我们定义两个连续的0为一对0,求经过n步以后有多少个一对0。首先需要明确永远不可能出现三个或以上的连续0。我们要求的...

2019-02-14 11:13:46 198

空空如也

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

TA关注的人

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