<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[junior19的博客]]></title><description><![CDATA[0oOo0oO0oO0]]></description><link>https://blog.youkuaiyun.com/junior19</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; junior19]]></copyright><item><title><![CDATA[Leetcoder 887. Super Egg Drop（动态规划）]]></title><link>https://blog.youkuaiyun.com/junior19/article/details/100076157</link><guid>https://blog.youkuaiyun.com/junior19/article/details/100076157</guid><author>junior19</author><pubDate>Mon, 26 Aug 2019 14:24:43 +0800</pubDate><description><![CDATA[题意：给K个鸡蛋，有N层楼，问至少要多少次扔鸡蛋才能保证找出摔破鸡蛋的临界楼层，鸡蛋碎了就没了。

思路：首先题意要搞清楚，是要保证能找出临界点，也就是你采取的方案无论临界点在哪一层，都必须在扔这么多次之内找出来。

方法一：dp[i][j]表示剩余i个鸡蛋处理j层楼至少要扔几次，那么怎么推理dp[i][j]呢？枚举第一个鸡蛋扔的楼层（1～j）,假设扔到了第k层，碎了，转移到dp[i-1][k-1...]]></description><category></category></item><item><title><![CDATA[记一次Linux C++ Segmentation fault处理]]></title><link>https://blog.youkuaiyun.com/junior19/article/details/98656804</link><guid>https://blog.youkuaiyun.com/junior19/article/details/98656804</guid><author>junior19</author><pubDate>Tue, 06 Aug 2019 20:42:39 +0800</pubDate><description><![CDATA[段错误有可能是重复free指针或者操作野指针，今天遇到了一个段错误bug，是由于某函数声明了返回值（应该返回一个shared_ptr），但是函数实现忘记return导致的，虽然使用这个函数时没有用到它的返回值，但是依然报错，gdb调试指向一个new语句，牛头不对马嘴，注释掉new语句后traceback指向下一个使用new的地方，所以当项目代码比较多时，调试不一定能找出来问题！段错误如果找不到原因...]]></description><category></category></item><item><title><![CDATA[IO多路复用EPOLL的ET模式下EPOLLIN事件触发时机]]></title><link>https://blog.youkuaiyun.com/junior19/article/details/98327824</link><guid>https://blog.youkuaiyun.com/junior19/article/details/98327824</guid><author>junior19</author><pubDate>Sat, 03 Aug 2019 13:35:17 +0800</pubDate><description><![CDATA[网上说的太宏观，自己测试一下各种情况，FD为nonblock。

0.客户端发送新数据过来，单线程阻塞在epoll_wait，epoll_wait返回可读事件。

1.单线程阻塞在epoll_wait，客户端发送新数据过来，epoll_wait返回可读事件。

2.单线程阻塞在epoll_wait，客户端发送新数据过来，epoll_wait返回可读事件开始读数据，同时客户端不再发送数据过来，并且缓...]]></description><category></category></item><item><title><![CDATA[leetcoder：41. 缺失的第一个正数 & 76. 最小覆盖子串]]></title><link>https://blog.youkuaiyun.com/junior19/article/details/96647824</link><guid>https://blog.youkuaiyun.com/junior19/article/details/96647824</guid><author>junior19</author><pubDate>Sat, 20 Jul 2019 23:40:40 +0800</pubDate><description><![CDATA[给定一个未排序的整数数组，找出其中没有出现的最小的正整数。

你的算法的时间复杂度应为O(n)，并且只能使用常数级别的空间。

思路：首先答案肯定在1~n，那么我们建个长度为N的数组，扫一遍元素组把位于1~n的数放到桶里面，最后扫一下哪个最小的空桶就行，怎么分到困难题的，代码略。



下一题

给你一个字符串 S、一个字符串 T，请在字符串 S 里面找出：包含 T 所有字母的最小子串。

示例...]]></description><category></category></item><item><title><![CDATA[leetcoder：124. 二叉树中的最大路径和 & 149. 直线上最多的点数]]></title><link>https://blog.youkuaiyun.com/junior19/article/details/96564681</link><guid>https://blog.youkuaiyun.com/junior19/article/details/96564681</guid><author>junior19</author><pubDate>Sat, 20 Jul 2019 09:47:01 +0800</pubDate><description><![CDATA[给定一个非空二叉树，返回其最大路径和。

本题中，路径被定义为一条从树中任意节点出发，达到任意节点的序列。该路径至少包含一个节点，且不一定经过根节点。

思路：递归，维护以每个点为开始往下延伸的路径的最大值回传给父节点，同时更新答案最大值。


/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val...]]></description><category></category></item><item><title><![CDATA[利用yaml-cpp库对数据结构序列化]]></title><link>https://blog.youkuaiyun.com/junior19/article/details/95636471</link><guid>https://blog.youkuaiyun.com/junior19/article/details/95636471</guid><author>junior19</author><pubDate>Fri, 12 Jul 2019 17:20:28 +0800</pubDate><description><![CDATA[有时候我们要将一个int、float、bool转成字符串，这个用boost能简单地实现，但是一些复杂的数据结构比如STL的vector、map、list、set甚至是组合的vector&lt;vector&lt;int&gt; &gt;、map&lt;string, vector&lt;list&lt;double&gt; &gt; &gt;数据结构，可以通过yaml库来实现序列化成字符串，下面简...]]></description><category></category></item><item><title><![CDATA[C++模板类实现std::list]]></title><link>https://blog.youkuaiyun.com/junior19/article/details/90260433</link><guid>https://blog.youkuaiyun.com/junior19/article/details/90260433</guid><author>junior19</author><pubDate>Thu, 16 May 2019 11:40:31 +0800</pubDate><description><![CDATA[list是以链表为底层的STL容器，下面用模板类实现它的基本功能，部分思路参考C++泛型STL原理和应用。

list实现的函数：


push_front()

push_back()

pop_front()

pop_back()

begin()

end()

size()


迭代器重载了：


=

==

!=

++

--

*



# include &lt;iostrea...]]></description><category></category></item><item><title><![CDATA[signal()信号测试]]></title><link>https://blog.youkuaiyun.com/junior19/article/details/89526780</link><guid>https://blog.youkuaiyun.com/junior19/article/details/89526780</guid><author>junior19</author><pubDate>Thu, 25 Apr 2019 21:38:57 +0800</pubDate><description><![CDATA[测试代码1：


# include &lt;stdio.h&gt;
# include &lt;error.h&gt;
# include &lt;sys/types.h&gt;
# include &lt;string.h&gt;
# include &lt;signal.h&gt;
typedef void Sigfunc(int);
void sig_usr(int signo){
	if...]]></description><category></category></item><item><title><![CDATA[fork()函数测试]]></title><link>https://blog.youkuaiyun.com/junior19/article/details/89492002</link><guid>https://blog.youkuaiyun.com/junior19/article/details/89492002</guid><author>junior19</author><pubDate>Wed, 24 Apr 2019 14:40:52 +0800</pubDate><description><![CDATA[测试代码1：


# include &lt;stdio.h&gt;
# include &lt;error.h&gt;
# include &lt;sys/types.h&gt;
# include &lt;string.h&gt;
int main(int argc, char *argv[]){
	char s[] = "hello\n";
	write(1, s, strlen(s));
...]]></description><category></category></item><item><title><![CDATA[JSON字符串解析器（unicode转utf-8）]]></title><link>https://blog.youkuaiyun.com/junior19/article/details/88758682</link><guid>https://blog.youkuaiyun.com/junior19/article/details/88758682</guid><author>junior19</author><pubDate>Sat, 23 Mar 2019 12:48:06 +0800</pubDate><description><![CDATA[图片和代码思路均参考：https://zhuanlan.zhihu.com/p/22731540

json的字符串格式为"..."，下面写个解析器来解析json的字符串也就是主要处理包含转义字符\这种情况，其中\u表示unicode字符，我们需要转成utf-8的编码格式，为什么呢？看下图

将会

如果unicode用上图第一列的默认编码（utf-16），将会使每一个字符至少占用两个字节，而使用...]]></description><category></category></item><item><title><![CDATA[CF1132C：Painting the Fence（暴力）]]></title><link>https://blog.youkuaiyun.com/junior19/article/details/88259068</link><guid>https://blog.youkuaiyun.com/junior19/article/details/88259068</guid><author>junior19</author><pubDate>Wed, 06 Mar 2019 22:01:42 +0800</pubDate><description><![CDATA[C. Painting the Fence

time limit per test

2 seconds

memory limit per test

256 megabytes

input

standard input

output

standard output

You have a long fence which consists ofnnsections. Unfort...]]></description><category></category></item><item><title><![CDATA[C语言多线程互斥锁]]></title><link>https://blog.youkuaiyun.com/junior19/article/details/88144481</link><guid>https://blog.youkuaiyun.com/junior19/article/details/88144481</guid><author>junior19</author><pubDate>Mon, 04 Mar 2019 22:56:09 +0800</pubDate><description><![CDATA[互斥锁是为了防止多个线程同时操作临界资源，下面看看用法：


# include &amp;lt;stdio.h&amp;gt;
# include &amp;lt;pthread.h&amp;gt;

pthread_mutex_t mute;
int value = 0;
void *fun(void *arg){
    //上锁，函数是阻塞的
    pthread_mutex_lock(&amp;amp;mute);
    ...]]></description><category></category></item><item><title><![CDATA[EPOLL高并发服务器]]></title><link>https://blog.youkuaiyun.com/junior19/article/details/88081673</link><guid>https://blog.youkuaiyun.com/junior19/article/details/88081673</guid><author>junior19</author><pubDate>Sat, 02 Mar 2019 21:22:25 +0800</pubDate><description><![CDATA[IO复用模型有select、poll、epoll，关于它们的区别：

1.select能处理的fd数量很少，我的电脑是1024个(sizeof(fd_set)*8)，而epoll的fd数量没有限制，只与内存大小有关。

2.select当fd就绪时，需要将所有fd拷贝到内核态再将活跃的fd拷贝回用户态，还有遍历fd数组判断哪个是活跃的。而epoll不需要频繁的拷贝，当fd就绪时调用回调函数插入到f...]]></description><category></category></item><item><title><![CDATA[CF1117C. Magic Ship（二分）]]></title><link>https://blog.youkuaiyun.com/junior19/article/details/87857395</link><guid>https://blog.youkuaiyun.com/junior19/article/details/87857395</guid><author>junior19</author><pubDate>Thu, 21 Feb 2019 11:19:35 +0800</pubDate><description><![CDATA[C. Magic Ship

time limit per test

2 seconds

memory limit per test

256 megabytes

input

standard input

output

standard output

You a captain of a ship. Initially you are standing in a point (x1,...]]></description><category></category></item><item><title><![CDATA[剑指offer：数组中的逆序对（分治）]]></title><link>https://blog.youkuaiyun.com/junior19/article/details/87645248</link><guid>https://blog.youkuaiyun.com/junior19/article/details/87645248</guid><author>junior19</author><pubDate>Mon, 18 Feb 2019 20:55:01 +0800</pubDate><description><![CDATA[ 

[编程题]数组中的逆序对

热度指数：243682 时间限制：2秒 空间限制：32768K
	算法知识视频讲解 
在数组中的两个数字，如果前面一个数字大于后面的数字，则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007

输入描述:



 

题目保证输入的数组中没有的相同的数字

数据范围：...]]></description><category></category></item><item><title><![CDATA[剑指offer：整数中1出现的次数（从1到n整数中1出现的次数）（数位dp）]]></title><link>https://blog.youkuaiyun.com/junior19/article/details/87627710</link><guid>https://blog.youkuaiyun.com/junior19/article/details/87627710</guid><author>junior19</author><pubDate>Mon, 18 Feb 2019 16:31:41 +0800</pubDate><description><![CDATA[求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数？为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数（从1 到 n 中1出现的次数）。

思路：正解的数学方法不想了，万金油的做法就是记忆化搜索，dp[pos][sum]表...]]></description><category></category></item><item><title><![CDATA[剑指offer：最小的K个数（大根堆）]]></title><link>https://blog.youkuaiyun.com/junior19/article/details/87116474</link><guid>https://blog.youkuaiyun.com/junior19/article/details/87116474</guid><author>junior19</author><pubDate>Tue, 12 Feb 2019 21:15:59 +0800</pubDate><description><![CDATA[题目描述

输入n个整数，找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字，则最小的4个数字是1,2,3,4,。

 

思路：维护一个大根堆，pop掉大的数，剩下的就是K小，O(nlogn)。

手写堆或者STL


class Solution {
public:
    int *a, tot=0;
    int top(){
        return a[1];...]]></description><category></category></item><item><title><![CDATA[剑指offer：数组中出现次数超过一半的数字]]></title><link>https://blog.youkuaiyun.com/junior19/article/details/87104365</link><guid>https://blog.youkuaiyun.com/junior19/article/details/87104365</guid><author>junior19</author><pubDate>Tue, 12 Feb 2019 20:49:25 +0800</pubDate><description><![CDATA[题目描述

数组中有一个数字出现的次数超过数组长度的一半，请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次，超过数组长度的一半，因此输出2。如果不存在则输出0。

思路：这题显然要O(n)，使用map或者hash复杂度都不理想。

方法一：随机算法，假设存在一个数超过一半，随机找出这个数，错误的概率最坏情况下为1/2，那么进行x次随机取...]]></description><category></category></item><item><title><![CDATA[剑指offer：二叉搜索树与双向链表]]></title><link>https://blog.youkuaiyun.com/junior19/article/details/86830745</link><guid>https://blog.youkuaiyun.com/junior19/article/details/86830745</guid><author>junior19</author><pubDate>Sat, 09 Feb 2019 19:20:31 +0800</pubDate><description><![CDATA[ 

题目描述

输入一棵二叉搜索树，将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点，只能调整树中结点指针的指向。

思路：模拟中序遍历的过程就OK，或者利用分治的思想，递归分别处理左右子树，再合并左右子树成一条链。


/*
struct TreeNode {
	int val;
	struct TreeNode *left;
	struct TreeNode *right;
...]]></description><category></category></item><item><title><![CDATA[leetcode239：Sliding Window Maximum（单调队列）]]></title><link>https://blog.youkuaiyun.com/junior19/article/details/86659261</link><guid>https://blog.youkuaiyun.com/junior19/article/details/86659261</guid><author>junior19</author><pubDate>Sat, 26 Jan 2019 17:39:04 +0800</pubDate><description><![CDATA[为了避免毕业后失业，还是要好好刷题，上次面试的时候问leetcode和剑指offer的比较多，去这里练习一下。

239. Sliding Window Maximum

Hard

127477FavoriteShare

Given an array nums, there is a sliding window of size k which is moving from the very ...]]></description><category></category></item></channel></rss>