<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[小强的博客]]></title><description><![CDATA[为了offer]]></description><link>https://blog.youkuaiyun.com/u011370813</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; u011370813]]></copyright><item><title><![CDATA[Linux文件属性以及链接]]></title><link>https://blog.youkuaiyun.com/u011370813/article/details/80933856</link><guid>https://blog.youkuaiyun.com/u011370813/article/details/80933856</guid><author>u011370813</author><pubDate>Thu, 05 Jul 2018 22:07:50 +0800</pubDate><description><![CDATA[今天说的这个命令，不是经常用，但是只要配置环境，这个命令就离不开我们，尤其是同一环境不同版本同时存在的时候，今天我们就一起研究一下这个命令的具体使用方法和一些常见的使用场景。 
ln是linux中又一个非常重要命令，它的功能是为某一个文件在另外一个位置建立一个同步的链接.当我们需要在不同的目录，用到相同的文件时，我们不需要在每一个需要的目录下都放一个必须相同的文件，我们只要在某个固定的目录，放上该...]]></description><category></category></item><item><title><![CDATA[通配符和正则表达式]]></title><link>https://blog.youkuaiyun.com/u011370813/article/details/80777351</link><guid>https://blog.youkuaiyun.com/u011370813/article/details/80777351</guid><author>u011370813</author><pubDate>Fri, 22 Jun 2018 18:32:31 +0800</pubDate><description><![CDATA[正则表达式：主要针对文件内容，文本过滤工具awk，sed中常用到 
通配符:主要用于文件名，在管道命令中常用。find，ls,cp等命令 
通配符是系统level的 而正则表达式需要相关工具的支持: egrep, awk, vi, perl，sed等 
正则表达式（也称为“regex”或“regexp”）是一种用来描述文本模式的特殊语法。在 Linux 系统上，正则表达式通常被用来查找文本的模式，...]]></description><category></category></item><item><title><![CDATA[二维数组查找]]></title><link>https://blog.youkuaiyun.com/u011370813/article/details/80588690</link><guid>https://blog.youkuaiyun.com/u011370813/article/details/80588690</guid><author>u011370813</author><pubDate>Tue, 05 Jun 2018 23:06:53 +0800</pubDate><description><![CDATA[在一个二维数组中每一行从左到右按照递增排序。每一列从上到下按照递增顺序排列。给定一个数字，在数组中查找这个数字，如果能找到则返回true，如果找不到则返回false



1.  bool Find(int target,vector&amp;lt;vector&amp;lt;int&amp;gt;&amp;gt; array)  
2.  {  
3.    int row=array.size();//计算行数  
4.  ...]]></description><category></category></item><item><title><![CDATA[空格替换]]></title><link>https://blog.youkuaiyun.com/u011370813/article/details/80588680</link><guid>https://blog.youkuaiyun.com/u011370813/article/details/80588680</guid><author>u011370813</author><pubDate>Tue, 05 Jun 2018 23:05:44 +0800</pubDate><description><![CDATA[空格替换为 %20

（1） 遍历字符串统计空格的个数n，以及字符串的长度len。 
（2） 每增加一个空格字符串长度增加2，则替换后字符串长度为len1=len+2*n。 
（3） 设置两个指针，一个指向原来字符串末尾len处，一个指向替换后总长度的末尾len1处。 
（4） p1向前移动依次把经历的字符串放置p2所指位置，p2赋值后前移一位，直到p1遇到空格，此时p2处插入%20并前移三个。然...]]></description><category></category></item><item><title><![CDATA[按之字形顺序打印二叉树]]></title><link>https://blog.youkuaiyun.com/u011370813/article/details/80503579</link><guid>https://blog.youkuaiyun.com/u011370813/article/details/80503579</guid><author>u011370813</author><pubDate>Tue, 29 May 2018 23:05:33 +0800</pubDate><description><![CDATA[请实现一个函数按照之字形打印二叉树，即第一行按照从左到右的顺序打印，第二层按照从右至左的顺序打印，第三行按照从左到右的顺序打印，其他行以此类推。

思路：

采用树的广度优先搜索策略 
借助两个栈：一个用来实现从左到右输出，一个用来实现从右到左输出，利用栈的先入后出顺序，不同的层时左右子树入栈的顺序不同，应该与其应出栈顺序相反

/*
struct TreeNode {
    int val;
...]]></description><category></category></item><item><title><![CDATA[翻转单词顺序列]]></title><link>https://blog.youkuaiyun.com/u011370813/article/details/80502955</link><guid>https://blog.youkuaiyun.com/u011370813/article/details/80502955</guid><author>u011370813</author><pubDate>Tue, 29 May 2018 22:09:04 +0800</pubDate><description><![CDATA[牛客最近来了一个新员工Fish，每天早晨总是会拿着一本英文杂志，写些句子在本子上。同事Cat对Fish写的内容颇感兴趣，有一天他向Fish借来翻看，但却读不懂它的意思。例如，“student. a am I”。后来才意识到，这家伙原来把句子单词的顺序翻转了，正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行，你能帮助他么？

思路：先反转整个字符串，然后根据...]]></description><category></category></item><item><title><![CDATA[链表——剑指offer]]></title><link>https://blog.youkuaiyun.com/u011370813/article/details/80425448</link><guid>https://blog.youkuaiyun.com/u011370813/article/details/80425448</guid><author>u011370813</author><pubDate>Wed, 23 May 2018 20:23:28 +0800</pubDate><description><![CDATA[
从尾到头打印链表 
思路：先把链表翻转，然后将翻转后的链表打印出来 
这种方法:因为多分配链表节点指针，故可能会对内存的消耗要大一点 
时间复杂度为O（n）




vector&amp;lt;int&amp;gt; printListFromTailToHead(listnode *head)
{
vector&amp;lt;int&amp;gt;a;
listnode *p=NULL;
listnode *p1=NULL;...]]></description><category></category></item><item><title><![CDATA[图的深度优先遍历和广度优先遍历]]></title><link>https://blog.youkuaiyun.com/u011370813/article/details/80413472</link><guid>https://blog.youkuaiyun.com/u011370813/article/details/80413472</guid><author>u011370813</author><pubDate>Tue, 22 May 2018 23:13:09 +0800</pubDate><description><![CDATA[BFS

思路


广度优先遍历中从一个节点出发，例如1，先找到其邻接至的节点，如2,3,4
然后依次把2,3,4放入队列，再从队列中依次取出每一个节点，找到其邻接至的节点插入到队列尾部
最终当队列中元素为空时就找到了1可以到达的所有路径

代码：




virtual void bfs(int v,int reach[],int label)//所有图的表示方法都可以直接用的广度优先搜索方法
...]]></description><category></category></item><item><title><![CDATA[对称的二叉树]]></title><link>https://blog.youkuaiyun.com/u011370813/article/details/80399738</link><guid>https://blog.youkuaiyun.com/u011370813/article/details/80399738</guid><author>u011370813</author><pubDate>Mon, 21 May 2018 23:30:49 +0800</pubDate><description><![CDATA[请实现一个函数，用来判断一颗二叉树是不是对称的。注意，如果一个二叉树同此二叉树的镜像是同样的，定义其为对称的。

思路：对称的二叉树中左子树的左孩子等于右子树的右孩子，左子树的右孩子等于右子树的左孩子 
而且当左右子树中有一个为空时就不会是对称

/*
struct TreeNode {
    int val;
    struct TreeNode *left;
    struct Tree...]]></description><category></category></item><item><title><![CDATA[Fibonacci数列]]></title><link>https://blog.youkuaiyun.com/u011370813/article/details/80378594</link><guid>https://blog.youkuaiyun.com/u011370813/article/details/80378594</guid><author>u011370813</author><pubDate>Sat, 19 May 2018 22:23:31 +0800</pubDate><description><![CDATA[题目描述

Fibonacci数列是这样定义的： 
F[0] = 0 
F[1] = 1 
for each i ≥ 2: F[i] = F[i-1] + F[i-2] 
因此，Fibonacci数列就形如：0, 1, 1, 2, 3, 5, 8, 13, …，在Fibonacci数列中的数我们称为Fibonacci数。给你一个N，你想让其变为一个Fibonacci数，每一步你可以把当前数字X变为...]]></description><category></category></item><item><title><![CDATA[把字符串转换成整数]]></title><link>https://blog.youkuaiyun.com/u011370813/article/details/80295915</link><guid>https://blog.youkuaiyun.com/u011370813/article/details/80295915</guid><author>u011370813</author><pubDate>Sat, 12 May 2018 23:12:54 +0800</pubDate><description><![CDATA[将一个字符串转换成一个整数，要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0



class Solution {

public:
    int StrToInt(string str) {
    int flag = 1;         //设置符号标志
    long long ret = 0;   //考虑到返回值可能较大，定义为long lon...]]></description><category></category></item><item><title><![CDATA[表示数值的字符串]]></title><link>https://blog.youkuaiyun.com/u011370813/article/details/80295758</link><guid>https://blog.youkuaiyun.com/u011370813/article/details/80295758</guid><author>u011370813</author><pubDate>Sat, 12 May 2018 22:51:43 +0800</pubDate><description><![CDATA[请实现一个函数用来判断字符串是否表示数值（包括整数和小数）。例如，字符串”+100”,”5e2”,”-123”,”3.1416”和”-1E-16”都表示数值。 但是”12e”,”1a3.14”,”1.2.3”,”+-5”和”12e+4.3”都不是。



class Solution {
public:
     void ScanString(char * &amp;amp;amp;number)//此处传入的...]]></description><category></category></item><item><title><![CDATA[左旋字符串]]></title><link>https://blog.youkuaiyun.com/u011370813/article/details/80293964</link><guid>https://blog.youkuaiyun.com/u011370813/article/details/80293964</guid><author>u011370813</author><pubDate>Sat, 12 May 2018 18:58:37 +0800</pubDate><description><![CDATA[汇编语言中有一种移位指令叫做循环左移（ROL），现在有个简单的任务，就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S，请你把其循环左移K位后的序列输出。例如，字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果，即“XYZdefabc”。是不是很简单？OK，搞定它！

分析：对于字符串左旋，实质为字符串旋转。对形如XY的字符串经过旋转后变为YX.此问题中，字符串左旋：n为旋...]]></description><category></category></item><item><title><![CDATA[Linux内存分配与释放：一]]></title><link>https://blog.youkuaiyun.com/u011370813/article/details/80271559</link><guid>https://blog.youkuaiyun.com/u011370813/article/details/80271559</guid><author>u011370813</author><pubDate>Thu, 10 May 2018 18:00:17 +0800</pubDate><description><![CDATA[Linux的虚拟内存管理有几个关键概念：

Linux 虚拟地址空间如何分布？malloc和free是如何分配和释放内存？如何查看堆内内存的碎片情况？既然堆内内存brk和sbrk不能直接释放，为什么不全部使用 mmap 来分配，munmap直接释放呢 ？

Linux 的虚拟内存管理有几个关键概念：  
1、每个进程都有独立的虚拟地址空间，进程访问的虚拟地址并不是真正的物理地址；  
2、虚拟地址...]]></description><category></category></item><item><title><![CDATA[二叉搜索树与双向链表]]></title><link>https://blog.youkuaiyun.com/u011370813/article/details/80261697</link><guid>https://blog.youkuaiyun.com/u011370813/article/details/80261697</guid><author>u011370813</author><pubDate>Thu, 10 May 2018 00:23:45 +0800</pubDate><description><![CDATA[输入一棵二叉搜索树，将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点，只能调整树中结点指针的指向。

思路：中序遍历整棵树。那么比较小的结点先访问。如果我们每访问一个结点，假设之前访问过的结点已经调整成一个排序双向链表，我们再把调整当前结点的指针将其链接到链表的末尾。当所有结点都访问过之后，整棵树也就转换成一个排序双向链表了

/*
struct TreeNode {
    in...]]></description><category></category></item><item><title><![CDATA[利用递归返回数组中的最大值]]></title><link>https://blog.youkuaiyun.com/u011370813/article/details/79587491</link><guid>https://blog.youkuaiyun.com/u011370813/article/details/79587491</guid><author>u011370813</author><pubDate>Sat, 05 May 2018 22:22:25 +0800</pubDate><description><![CDATA[int theMax(int a[],int n){int t;if(n&amp;gt;1){t=f(a,n-1);return t&amp;gt;a[n-1]?t:a[n-1];}elsereturn a[0];}]]></description><category></category></item><item><title><![CDATA[删除链表中重复的结点]]></title><link>https://blog.youkuaiyun.com/u011370813/article/details/80210251</link><guid>https://blog.youkuaiyun.com/u011370813/article/details/80210251</guid><author>u011370813</author><pubDate>Sat, 05 May 2018 22:18:54 +0800</pubDate><description><![CDATA[在一个排序的链表中，存在重复的结点，请删除该链表中重复的结点，重复的结点不保留，返回链表头指针。 例如，链表1-&amp;gt;2-&amp;gt;3-&amp;gt;3-&amp;gt;4-&amp;gt;4-&amp;gt;5 处理后为 1-&amp;gt;2-&amp;gt;5



/*
struct ListNode {
    int val;
    struct ListNode *next;
    ListNode(int x) :
   ...]]></description><category></category></item><item><title><![CDATA[和为S的连续正数序列]]></title><link>https://blog.youkuaiyun.com/u011370813/article/details/80210237</link><guid>https://blog.youkuaiyun.com/u011370813/article/details/80210237</guid><author>u011370813</author><pubDate>Sat, 05 May 2018 22:17:24 +0800</pubDate><description><![CDATA[小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!



class Solution {
public:...]]></description><category></category></item><item><title><![CDATA[和为S的两个数字]]></title><link>https://blog.youkuaiyun.com/u011370813/article/details/80210182</link><guid>https://blog.youkuaiyun.com/u011370813/article/details/80210182</guid><author>u011370813</author><pubDate>Sat, 05 May 2018 22:11:30 +0800</pubDate><description><![CDATA[输入一个递增排序的数组和一个数字S，在数组中查找两个数，是的他们的和正好是S，如果有多对数字的和等于S，输出两个数的乘积最小的。

class Solution {
public:
    vector&amp;lt;int&amp;gt; FindNumbersWithSum(vector&amp;lt;int&amp;gt; array,int sum) {
        //思路：首先查找数组中所有和为s的组合，然后计算...]]></description><category></category></item><item><title><![CDATA[构建乘积数组]]></title><link>https://blog.youkuaiyun.com/u011370813/article/details/80210171</link><guid>https://blog.youkuaiyun.com/u011370813/article/details/80210171</guid><author>u011370813</author><pubDate>Sat, 05 May 2018 22:10:13 +0800</pubDate><description><![CDATA[题目描述 
给定一个数组A[0,1,…,n-1],请构建一个数组B[0,1,…,n-1],其中B中的元素B[i]=A[0]A[1]…A[i-1]*A[i+1]…*A[n-1]。不能使用除法。

方法一：时间复杂度为O（n2）



class Solution {
public:
    vector&amp;lt;int&amp;gt; multiply(const vector&amp;lt;int&amp;gt;&amp;amp;...]]></description><category></category></item></channel></rss>