<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[dreamispossible的博客]]></title><description><![CDATA[踏踏实实写代码]]></description><link>https://blog.youkuaiyun.com/dreamispossible</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; dreamispossible]]></copyright><item><title><![CDATA[你想要了解的贪心算法都在这里]]></title><link>https://blog.youkuaiyun.com/dreamispossible/article/details/102730683</link><guid>https://blog.youkuaiyun.com/dreamispossible/article/details/102730683</guid><author>dreamispossible</author><pubDate>Thu, 24 Oct 2019 20:32:36 +0800</pubDate><description><![CDATA[贪心算法
贪心算法（又称贪婪算法）是指，在对问题求解时，总是做出在当前看来是最好的选择。也就是说，不从整体最优上加以考虑，他所做出的是在某种意义上的局部最优解。
贪心算法不是对所有问题都能得到整体最优解，关键是贪心策略的选择，选择的贪心策略必须具备无后效性，即某个状态以前的过程不会影响以后的状态，只与当前状态有关。
基本思路
1.建立数学模型来描述问题；
2.把求解的问题分成若干个子问题；
3.对...]]></description><category></category></item><item><title><![CDATA[Http的八种请求方法]]></title><link>https://blog.youkuaiyun.com/dreamispossible/article/details/100086622</link><guid>https://blog.youkuaiyun.com/dreamispossible/article/details/100086622</guid><author>dreamispossible</author><pubDate>Mon, 26 Aug 2019 21:47:27 +0800</pubDate><description><![CDATA[1.GET
get方法请求指定的页面信息，返回实体主体。该请求是向服务器请求信息，请求参数会跟在url后面，因此，对传参长度有限制的，而且不同浏览器的上限是不同的（2k, 7~8k及其他）。由于get请求直接将参数暴露在url中，因此对于一些带有重要信息的请求可能并不完全合适。
2.POST
post请求是向指定资源提交数据进行处理请求，例如提交表单或者上传文件等。数据被包含在请求体中，POST请...]]></description><category></category></item><item><title><![CDATA[如何优雅的反转单链表以及变种形式]]></title><link>https://blog.youkuaiyun.com/dreamispossible/article/details/99871682</link><guid>https://blog.youkuaiyun.com/dreamispossible/article/details/99871682</guid><author>dreamispossible</author><pubDate>Tue, 20 Aug 2019 19:23:25 +0800</pubDate><description><![CDATA[【题目描述】
反转单链表。
例如链表为： 1-&gt;2-&gt;3-&gt;4
反转后为: 4-&gt;3-&gt;2-&gt;1
【要求】 :如果链表的长度为 N, 时间复杂度达到 O(N), 额外空间复杂度达到 O(1).
【解答】
方法1
这道题还是挺简单的，当我们在反转一个节点的时候，把一个节点的后驱改为指向它前驱就可以了。这里需要注意的点就是，当你把当前节点的后驱指向前驱的时候，这个时...]]></description><category></category></item><item><title><![CDATA[TCP基本通信流程]]></title><link>https://blog.youkuaiyun.com/dreamispossible/article/details/99208845</link><guid>https://blog.youkuaiyun.com/dreamispossible/article/details/99208845</guid><author>dreamispossible</author><pubDate>Sun, 11 Aug 2019 19:20:23 +0800</pubDate><description><![CDATA[TCP 通信基本流程
不管多么复杂的服务器或客户端程序，其网络通信的基本原理一定如下所述：
对于服务器，其通信流程一般有如下步骤：


调用 socket 函数创建 socket（侦听socket）
调用 bind 函数 将 socket绑定到某个ip和端口的二元组上
调用 listen 函数 开启侦听
当有客户端请求连接上来后，调用 accept 函数接受连接，产生一个新的 socket（客户端...]]></description><category></category></item><item><title><![CDATA[浅析动态规划-----------不看后悔系列]]></title><link>https://blog.youkuaiyun.com/dreamispossible/article/details/98529011</link><guid>https://blog.youkuaiyun.com/dreamispossible/article/details/98529011</guid><author>dreamispossible</author><pubDate>Mon, 05 Aug 2019 23:05:33 +0800</pubDate><description><![CDATA[写在前面的话
讲道理，我对dp这块的理解并不深，当初学的时候，也仅仅停留在一些名词上。比如大佬们经常说的数位dp，树形dp，区间dp，插头dp，棋盘dp，背包dp等等。。。
那究竟什么是dp呢?维基百科上是这样定义的：

DP就是一种方法，该方法能够将复杂的问题分解成为一系列简单的子问题。

时隔一段时间了，准备好好把dp这个算法总结总结，不会的地方抓紧补上，会的地方夯实夯实，写出一些自己不一样的...]]></description><category></category></item><item><title><![CDATA[Leetcode：刷完31道链表题的一点总结]]></title><link>https://blog.youkuaiyun.com/dreamispossible/article/details/97179525</link><guid>https://blog.youkuaiyun.com/dreamispossible/article/details/97179525</guid><author>dreamispossible</author><pubDate>Wed, 24 Jul 2019 22:57:50 +0800</pubDate><description><![CDATA[前言

今天终于刷完了 Leetcode 上的链表专题，虽然只有 31 道题（总共是 35 道，但有 4 道题加了锁）而已，但也陆陆续续做了两三个星期，严重跟不上原先计划啊。先写一篇博客总结一下这阵子刷链表题的收获吧，有输入也要有输出。这里就不花篇幅介绍链表的一些基本概念了，不清楚的看官就自行百度一下吧，本文主要介绍一些常见的链表题和解题思路。

正文
缓存
不得不说使用数组 / map 来缓存链...]]></description><category></category></item><item><title><![CDATA[通俗易懂的进程与线程之间的关系（有图）]]></title><link>https://blog.youkuaiyun.com/dreamispossible/article/details/96484418</link><guid>https://blog.youkuaiyun.com/dreamispossible/article/details/96484418</guid><author>dreamispossible</author><pubDate>Fri, 19 Jul 2019 17:10:03 +0800</pubDate><description><![CDATA[写在前面的话
进程（process）和线程（thread）是操作系统的基本概念，但是它们比较抽象，不容易掌握。
1

计算机的核心是CPU，它承担了所有的计算任务。它就像一座工厂，时刻在运行。
2.

假定工厂的电力有限，一次只能供给一个车间使用。也就是说，一个车间开工的时候，其他车间都必须停工。背后的含义就是，单个CPU一次只能运行一个任务。
3.

进程就好比工厂的车间，它代表CPU所能处理的...]]></description><category></category></item><item><title><![CDATA[一行代码解决约瑟夫环问题]]></title><link>https://blog.youkuaiyun.com/dreamispossible/article/details/96360338</link><guid>https://blog.youkuaiyun.com/dreamispossible/article/details/96360338</guid><author>dreamispossible</author><pubDate>Wed, 17 Jul 2019 21:00:14 +0800</pubDate><description><![CDATA[约瑟夫环

问题描述：编号为 1-N 的 N 个士兵围坐在一起形成一个圆圈，从编号为 1 的士兵开始依次报数（1，2，3…这样依次报），数到 m 的 士兵会被杀死出列，之后的士兵再从 1 开始报数。直到最后剩下一士兵，求这个士兵的编号。

1、方法一：数组
在第一次遇到这个题的时候，我是用数组做的，我猜绝大多数人也都知道怎么做。方法是这样的：
用一个数组来存放 1，2，3 … n 这 n 个编号，...]]></description><category></category></item><item><title><![CDATA[斐波那契凤尾]]></title><link>https://blog.youkuaiyun.com/dreamispossible/article/details/95506062</link><guid>https://blog.youkuaiyun.com/dreamispossible/article/details/95506062</guid><author>dreamispossible</author><pubDate>Thu, 11 Jul 2019 18:50:17 +0800</pubDate><description><![CDATA[链接：https://www.nowcoder.com/questionTerminal/c0a4b917a15f40a49ca10532ab9019fb
NowCoder号称自己已经记住了1-100000之间所有的斐波那契数。
为了考验他，我们随便出一个数n，让他说出第n个斐波那契数。当然，斐波那契数会很大。因此，如果第n个斐波那契数不到6位，则说出该数；否则只说出最后6位。
输入描述:

输入...]]></description><category></category></item><item><title><![CDATA[美国节日]]></title><link>https://blog.youkuaiyun.com/dreamispossible/article/details/95505621</link><guid>https://blog.youkuaiyun.com/dreamispossible/article/details/95505621</guid><author>dreamispossible</author><pubDate>Thu, 11 Jul 2019 18:48:31 +0800</pubDate><description><![CDATA[链接：https://www.nowcoder.com/questionTerminal/d95d98a2f96e49078cd7df84ba0c9d79
和中国的节日不同，美国的节假日通常是选择某个月的第几个星期几这种形式，因此每一年的放假日期都不相同。具体规则如下：

1月1日：元旦
1月的第三个星期一：马丁·路德·金纪念日
2月的第三个星期一：总统节
5月的最后一个星期一：阵亡将士纪念日
7...]]></description><category></category></item><item><title><![CDATA[删除排序数组中的重复项（I和 II）]]></title><link>https://blog.youkuaiyun.com/dreamispossible/article/details/93671802</link><guid>https://blog.youkuaiyun.com/dreamispossible/article/details/93671802</guid><author>dreamispossible</author><pubDate>Tue, 25 Jun 2019 23:49:40 +0800</pubDate><description><![CDATA[描述
给定一个排序数组，你需要在原地删除重复出现的元素，使得每个元素只出现一次，返回移除后数组的新长度。
不要使用额外的数组空间，你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。
示例 1:

给定数组 nums = [1,1,2],
函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。
你不需要考虑数组中超出新长度后面的元素。

示例 2:

给定...]]></description><category></category></item><item><title><![CDATA[一看就懂的贪心算法]]></title><link>https://blog.youkuaiyun.com/dreamispossible/article/details/93376565</link><guid>https://blog.youkuaiyun.com/dreamispossible/article/details/93376565</guid><author>dreamispossible</author><pubDate>Sat, 22 Jun 2019 23:28:56 +0800</pubDate><description><![CDATA[写在前面的话
今天我介绍的主题是贪心算法。这是相对比较容易的一种算法。我这里不给出定义，因为大家可以自行网络搜索。咱们直接看例子。

贪心算法，如果不用手动证明一个问题的数学性质的话，其实是比较简单的。看这样一个例子：假设有一个背包，其最大容量是50KG，现在有各种不同价值的液体，比方说，有水，其价值是10 每千克，共100KG；酒精，其价值是20 每千克，共30KG；有油，价值25每千克，共30...]]></description><category></category></item><item><title><![CDATA[腾讯面试题：有了二叉查找树、平衡树为啥还需要红黑树？]]></title><link>https://blog.youkuaiyun.com/dreamispossible/article/details/92852943</link><guid>https://blog.youkuaiyun.com/dreamispossible/article/details/92852943</guid><author>dreamispossible</author><pubDate>Wed, 19 Jun 2019 23:46:35 +0800</pubDate><description><![CDATA[1、二叉查找树的缺点
二叉查找树，相信大家都接触过，二叉查找树的特点就是左子树的节点值比父亲节点小，而右子树的节点值比父亲节点大，如图

基于二叉查找树的这种特点，我们在查找某个节点的时候，可以采取类似于二分查找的思想，快速找到某个节点。n 个节点的二叉查找树，正常的情况下，查找的时间复杂度为 O（logn）。
之所以说是正常情况下，是因为二叉查找树有可能出现一种极端的情况，例如

这种情况也是满...]]></description><category></category></item><item><title><![CDATA[字符串匹配BM（Boyer-Moore）算法：文本编辑器中的查找功能是如何实现的？]]></title><link>https://blog.youkuaiyun.com/dreamispossible/article/details/92735813</link><guid>https://blog.youkuaiyun.com/dreamispossible/article/details/92735813</guid><author>dreamispossible</author><pubDate>Mon, 17 Jun 2019 22:42:27 +0800</pubDate><description><![CDATA[写在前面的的话
关于字符串匹配算法有很多，之前我有写过一篇 KMP 匹配算法：
https://blog.youkuaiyun.com/dreamispossible/article/details/91359237  不懂 kmp 的建议看下，写的还不错，这个算法虽然很牛逼，但在实际中用的并不是特别多。至于选择哪一种字符串匹配算法，在不同的场景有不同的选择。
在我们平时文档里的字符查找里

采用的就是 Bo...]]></description><category></category></item><item><title><![CDATA[手套]]></title><link>https://blog.youkuaiyun.com/dreamispossible/article/details/91659694</link><guid>https://blog.youkuaiyun.com/dreamispossible/article/details/91659694</guid><author>dreamispossible</author><pubDate>Wed, 12 Jun 2019 23:40:42 +0800</pubDate><description><![CDATA[题目描述

在地下室里放着n种颜色的手套，手套分左右手，但是每种颜色的左右手手套个数不一定相同。A先生现在要出门，所以他要去地下室选手套。但是昏暗的灯光让他无法分辨手套的颜色，只能分辨出左右手。所以他会多拿一些手套，然后选出一双颜色相同的左右手手套。现在的问题是，他至少要拿多少只手套(左手加右手)，才能保证一定能选出一双颜色相同的手套。
给定颜色种数n(1≤n≤13),同时给定两个长度为n的数组l...]]></description><category></category></item><item><title><![CDATA[跳石板]]></title><link>https://blog.youkuaiyun.com/dreamispossible/article/details/91409476</link><guid>https://blog.youkuaiyun.com/dreamispossible/article/details/91409476</guid><author>dreamispossible</author><pubDate>Mon, 10 Jun 2019 23:16:23 +0800</pubDate><description><![CDATA[题目描述

小易来到了一条石板路前，每块石板上从1挨着编号为：1、2、3…
这条石板路要根据特殊的规则才能前进：对于小易当前所在的编号为K的 石板，小易单次只能往前跳K的一个约数(不含1和K)步，即跳到K+X(X为K的一个非1和本身的约数)的位置。 小易当前处在编号为N的石板，他想跳到编号恰好为M的石板去，小易想知道最少需要跳跃几次可以到达。

例如：
N = 4，M = 24：
4-&gt;6-...]]></description><category></category></item><item><title><![CDATA[数字和为sum的方法数]]></title><link>https://blog.youkuaiyun.com/dreamispossible/article/details/91409018</link><guid>https://blog.youkuaiyun.com/dreamispossible/article/details/91409018</guid><author>dreamispossible</author><pubDate>Mon, 10 Jun 2019 23:09:31 +0800</pubDate><description><![CDATA[题目描述

给定一个有n个正整数的数组A和一个整数sum,求选择数组A中部分数字和为sum的方案数。
当两种选取方案有一个数字的下标不一样,我们就认为是不同的组成方案。

输入描述:
输入为两行:
第一行为两个正整数n(1 ≤ n ≤ 1000)，sum(1 ≤ sum ≤ 1000)
第二行为n个正整数A [i] (32位整数)，以空格隔开。
输出描述:
输出所求的方案数
#include&lt...]]></description><category></category></item><item><title><![CDATA[我所理解的KMP算法]]></title><link>https://blog.youkuaiyun.com/dreamispossible/article/details/91359237</link><guid>https://blog.youkuaiyun.com/dreamispossible/article/details/91359237</guid><author>dreamispossible</author><pubDate>Sun, 09 Jun 2019 23:54:36 +0800</pubDate><description><![CDATA[字符串匹配算法
字符串匹配是计算机的进行的非常频繁的算法。简单的说，有一个字符串 I have a dream. 。我想知道的事情是，里面是否包含另一个字符串 dream ？
因为执行的非常频繁，所以算法的效率也就十分重要。而本文所说的KMP算法，无疑是速度上面的佼佼者，它可以在 O(n+m) 的时间完成匹配。

KMP算法由D.E.Knuth，J.H.Morris和V.R.Pratt同时发现，因...]]></description><category></category></item><item><title><![CDATA[阶乘相关的一些面试题]]></title><link>https://blog.youkuaiyun.com/dreamispossible/article/details/91345741</link><guid>https://blog.youkuaiyun.com/dreamispossible/article/details/91345741</guid><author>dreamispossible</author><pubDate>Sat, 08 Jun 2019 16:39:15 +0800</pubDate><description><![CDATA[案例一

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 给定一个整数 N，那么 N 的阶乘 N! 末尾有多少个 0？例如： N = 10，则 N！= 3628800，那么 N! 的末尾有两个0。

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;有些人心想，这还不简单，直接算出 N！的值，然后用除以 10 来判断多少个 0 就可以了。
&nbsp...]]></description><category></category></item><item><title><![CDATA[面试中被问到三次握手四次挥手应该怎么回答？---------不看后悔系列]]></title><link>https://blog.youkuaiyun.com/dreamispossible/article/details/91345391</link><guid>https://blog.youkuaiyun.com/dreamispossible/article/details/91345391</guid><author>dreamispossible</author><pubDate>Sat, 08 Jun 2019 16:05:01 +0800</pubDate><description><![CDATA[写在前面的话

在面试中，三次握手和四次挥手可以说是问的最频繁的一个知识点了，我相信大家也都看过很多关于三次握手与四次挥手的博客，今天的这篇博客，重点是围绕着面试，我们应该掌握哪些比较重要的点，哪些是比较被面试官给问到的，我觉得如果你能把我下面列举的一些点都记住、理解，我想就差不多了。

三次握手
当面试官问你为什么需要有三次握手、三次握手的作用、讲讲三次三次握手的时候，我想很多人会这样回答：
首...]]></description><category></category></item></channel></rss>