<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[ccnnli的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/ccnnli</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ccnnli]]></copyright><item><title><![CDATA[五年北漂人来杭州]]></title><link>https://blog.youkuaiyun.com/ccnnli/article/details/109250523</link><guid>https://blog.youkuaiyun.com/ccnnli/article/details/109250523</guid><author>ccnnli</author><pubDate>Tue, 07 May 2024 20:14:25 +0800</pubDate><description><![CDATA[北漂人来杭记]]></description><category></category></item><item><title><![CDATA[好久不见，回来看看七年前的你]]></title><link>https://blog.youkuaiyun.com/ccnnli/article/details/138539426</link><guid>https://blog.youkuaiyun.com/ccnnli/article/details/138539426</guid><author>ccnnli</author><pubDate>Tue, 07 May 2024 17:44:42 +0800</pubDate><description><![CDATA[我时常把这比喻成是一个高级的监狱，管吃管住，每月给点窝囊废，想买的东西还是那么遥远~真的特别真实，研究生毕业的时候，是连想都不敢想，简历都没敢投~那时，一起在网上记录文字的人，也都慢慢失去了联系~]]></description><category></category></item><item><title><![CDATA[写在2017年秋招之后的话]]></title><link>https://blog.youkuaiyun.com/ccnnli/article/details/78311152</link><guid>https://blog.youkuaiyun.com/ccnnli/article/details/78311152</guid><author>ccnnli</author><pubDate>Sun, 22 Oct 2017 16:51:23 +0800</pubDate><description><![CDATA[2017年初定下的小目标

工作终于尘埃落定，所经历的一切也总算有了回报。
请教我本科老师，本科老师说了一句话好经典，说现在这个社会，真的特别讲道理，付出就会有回报，累没关系，只要让我觉得我的付出是值得的就行，能给我一定的回报就好，真的是这样子的。
虽然我也没有像多少大牛一样，学的多牛，毕竟的跨专业自学，但是结局也还好，进了京东，成快递小哥了。
从九月初开始准备笔试，比较大的互联网公司基]]></description><category></category></item><item><title><![CDATA[美团校招笔试题]]></title><link>https://blog.youkuaiyun.com/ccnnli/article/details/77711644</link><guid>https://blog.youkuaiyun.com/ccnnli/article/details/77711644</guid><author>ccnnli</author><pubDate>Wed, 30 Aug 2017 16:29:04 +0800</pubDate><description><![CDATA[大富翁游戏（类似于变态跳青蛙问题）
#include 
using namespace std;
int main()
{
    int n, ans;
    cin>>n;
    if(n<0)
        return 0;
    ans=1;
    for(int i =1;i<n;i++)
        {
        ans*=2;
    }
    cout<<]]></description><category></category></item><item><title><![CDATA[通俗易懂看RB-tree（二）]]></title><link>https://blog.youkuaiyun.com/ccnnli/article/details/77657748</link><guid>https://blog.youkuaiyun.com/ccnnli/article/details/77657748</guid><author>ccnnli</author><pubDate>Mon, 28 Aug 2017 21:28:38 +0800</pubDate><description><![CDATA[RB-tree结点设计
codes：
typedef bool rb_tree_color_type
const rb_tree_color_type rb_tree_red=false;
const rb_tree_color_type rb_tree_black=true;
struct rb_tree_node_base  
{
    typedef rb_tree_color_typ]]></description><category></category></item><item><title><![CDATA[通俗易懂看RB-tree（一）]]></title><link>https://blog.youkuaiyun.com/ccnnli/article/details/77175563</link><guid>https://blog.youkuaiyun.com/ccnnli/article/details/77175563</guid><author>ccnnli</author><pubDate>Mon, 28 Aug 2017 21:13:59 +0800</pubDate><description><![CDATA[RB-tree首先RB-tree是一颗二叉搜索树。
  特点：
  
  
  结点非红即黑。
  根节点为黑。
  如果结点为红，则子结点必为黑。
  任一结点至NULL的任何路径，所含黑结点树必须相同。
  
由规则4可知：新增结点必为红。 
由规则3可知：新增结点之父结点必为黑。插入结点
状况1：状况1：S为黑且X为外侧插入，对此情况，我们先对P,G做一次单旋转，并更改P,G颜色，即可重新满足]]></description><category></category></item><item><title><![CDATA[通俗易懂看AVL树]]></title><link>https://blog.youkuaiyun.com/ccnnli/article/details/77628390</link><guid>https://blog.youkuaiyun.com/ccnnli/article/details/77628390</guid><author>ccnnli</author><pubDate>Mon, 28 Aug 2017 14:28:00 +0800</pubDate><description><![CDATA[平衡因子计算：二叉树上左子树深度减去右子树深度的值称为平衡因子BF。也可以看作是左子树高度减去右子树高度。]]></description><category></category></item><item><title><![CDATA[动态规划-直方图内最大矩形]]></title><link>https://blog.youkuaiyun.com/ccnnli/article/details/77607714</link><guid>https://blog.youkuaiyun.com/ccnnli/article/details/77607714</guid><author>ccnnli</author><pubDate>Sat, 26 Aug 2017 21:57:02 +0800</pubDate><description><![CDATA[题目来源：直方图内最大矩形
有一个直方图，用一个整数数组表示，其中每列的宽度为1，求所给直方图包含的最大矩形面积。比如，对于直方图[2,7,9,4],它所包含的最大矩形的面积为14(即[7,9]包涵的7x2的矩形)。

给定一个直方图A及它的总宽度n，请返回最大矩形面积。保证直方图宽度小于等于500。保证结果在int范围内。
动态规划方法，构建动态数组dp[i][j]，含义是从第i个元素到]]></description><category></category></item><item><title><![CDATA[剑指offer-二叉搜索树中的第k个结点]]></title><link>https://blog.youkuaiyun.com/ccnnli/article/details/77579275</link><guid>https://blog.youkuaiyun.com/ccnnli/article/details/77579275</guid><author>ccnnli</author><pubDate>Fri, 25 Aug 2017 21:20:14 +0800</pubDate><description><![CDATA[题目：
给定一颗二叉搜索树，请找出其中的第k大的结点。


二叉搜索树的中序遍历是数值递增排序的，因此只需要中序遍历二叉搜索树，就可找到第k大的结点。
struct BinaryTree
{
    int data;
    BinaryTree *left;
    BinaryTree *right;
};

//二叉搜索树的第K个结点

BinaryTree *KthNode(B]]></description><category></category></item><item><title><![CDATA[动态规划-最优编辑]]></title><link>https://blog.youkuaiyun.com/ccnnli/article/details/77572216</link><guid>https://blog.youkuaiyun.com/ccnnli/article/details/77572216</guid><author>ccnnli</author><pubDate>Fri, 25 Aug 2017 13:55:56 +0800</pubDate><description><![CDATA[题目：

对于两个字符串A和B，我们需要进行插入、删除和修改操作将A串变为B串，定义c0，c1，c2分别为三种操作的代价，请设计一个高效算法，求出将A串变为B串所需要的最少代价。


给定两个字符串A和B，及它们的长度和三种操作代价，请返回将A串变为B串所需要的最小代价。保证两串长度均小于等于300，且三种代价值均小于等于100。


根据动态规划特点，定义二维数组来实现转化代价的]]></description><category></category></item><item><title><![CDATA[剑指offer-按之字形顺序打印二叉树]]></title><link>https://blog.youkuaiyun.com/ccnnli/article/details/77571723</link><guid>https://blog.youkuaiyun.com/ccnnli/article/details/77571723</guid><author>ccnnli</author><pubDate>Fri, 25 Aug 2017 12:32:56 +0800</pubDate><description><![CDATA[题目：
实现一个函数按照之字形顺序打印二叉树。


struct BinaryTree
{
    int data;
    BinaryTree *left;
    BinaryTree *right;
};

void print(BinaryTree *pRoot)
{
    if(pRoot==NULL)
        return;
    stack level[2];]]></description><category></category></item><item><title><![CDATA[剑指offer-把二叉树打印成多行]]></title><link>https://blog.youkuaiyun.com/ccnnli/article/details/77554857</link><guid>https://blog.youkuaiyun.com/ccnnli/article/details/77554857</guid><author>ccnnli</author><pubDate>Fri, 25 Aug 2017 09:47:38 +0800</pubDate><description><![CDATA[题目：
从上到下按层打印二叉树，同一层的结点按从左到右的顺序打印，每一层打印到一行。


struct BinaryTree
{
	int data;
	BinaryTree *left;
	BinaryTree *right;
};

void print(BinaryTree *pRoot)
{
	if (pRoot == NULL)
		return;
	queue  nodes;
]]></description><category></category></item><item><title><![CDATA[剑指offer-对称的二叉树]]></title><link>https://blog.youkuaiyun.com/ccnnli/article/details/77540432</link><guid>https://blog.youkuaiyun.com/ccnnli/article/details/77540432</guid><author>ccnnli</author><pubDate>Thu, 24 Aug 2017 19:57:42 +0800</pubDate><description><![CDATA[题目：
判断二叉树是否是镜像的。


//对称的二叉树；
bool isSymmetrical(BinaryTree *pRoot)
{
	return isSymmetrical(pRoot,pRoot);
}
bool isSymmertrical(BinaryTree *pRoot1, BinaryTree *pRoot2)
{
	if (pRoot1 == NULL&&pRoot2]]></description><category></category></item><item><title><![CDATA[剑指offer-中序遍历的下一个结点]]></title><link>https://blog.youkuaiyun.com/ccnnli/article/details/77540248</link><guid>https://blog.youkuaiyun.com/ccnnli/article/details/77540248</guid><author>ccnnli</author><pubDate>Thu, 24 Aug 2017 19:46:33 +0800</pubDate><description><![CDATA[题目：
求二叉树中序遍历的下一个结点。
根据二叉树中序遍历的特点，中序遍历是从小到大排序的，以左根右顺序依次遍历二叉树。


/找出中序遍历的下一个结点
struct BinaryTree
{
	int data;
	BinaryTree *left;
	BinaryTree *right;
	BinaryTree *parent;
};

BinaryTree *GetNext(Bin]]></description><category></category></item><item><title><![CDATA[剑指offer-删除链表中重复的结点]]></title><link>https://blog.youkuaiyun.com/ccnnli/article/details/77539780</link><guid>https://blog.youkuaiyun.com/ccnnli/article/details/77539780</guid><author>ccnnli</author><pubDate>Thu, 24 Aug 2017 18:41:13 +0800</pubDate><description><![CDATA[题目：
在排序链表中，删除重复的结点。


struct ListNode
{
	int data;
	ListNode *next;
};

void deleteDuplication(ListNode **head)
{
	if (head == NULL || *head == NULL)
		return;
	ListNode *preNode = NULL;
	ListNode]]></description><category></category></item><item><title><![CDATA[剑指offer-链表中环的入口点]]></title><link>https://blog.youkuaiyun.com/ccnnli/article/details/77530515</link><guid>https://blog.youkuaiyun.com/ccnnli/article/details/77530515</guid><author>ccnnli</author><pubDate>Thu, 24 Aug 2017 15:26:34 +0800</pubDate><description><![CDATA[题目：
一个链表中包含环，如何找出环的入口结点。


ListNode *MeetingNode(ListNode *head)//找出环中的一个结点，利用快慢指针来实现；
{
	if (head == NULL)
		return NULL;
	ListNode *slow = head->next;
	ListNode *quick = head->next;
	if (slow ==]]></description><category></category></item><item><title><![CDATA[剑指offer-构建乘积数组]]></title><link>https://blog.youkuaiyun.com/ccnnli/article/details/77525870</link><guid>https://blog.youkuaiyun.com/ccnnli/article/details/77525870</guid><author>ccnnli</author><pubDate>Thu, 24 Aug 2017 10:32:15 +0800</pubDate><description><![CDATA[题目：
给定一个数组A[0，1，2...n-1]，请构建一个数组B[0,1,2...n-1]，其中B中的元素B[I]=A[0]*A[1]**A[I-1]*A[I+1]***A[n-1]。不能使用除法。


void multiply(const vector &array1, vector &array2)
{
	int length1 = array1.size();
	int leng]]></description><category></category></item><item><title><![CDATA[关于动态规划算法]]></title><link>https://blog.youkuaiyun.com/ccnnli/article/details/77144610</link><guid>https://blog.youkuaiyun.com/ccnnli/article/details/77144610</guid><author>ccnnli</author><pubDate>Sun, 13 Aug 2017 15:35:38 +0800</pubDate><description><![CDATA[在暴力搜索基础上，增加了记忆机制而减少了时间复杂度，动态规划是一种以空间换时间的快速算法。
经典例题：
找零钱问题：用n种货币，组成aim的钱数，有多少种方法；
法一：
初始化一个二维数组dp[n][aim]，行数为n，列数为aim。dp[i][j]含义为用penny[0...i]的货币组成j的钱数有多少种方法。
递归公式：
dp[i][j]=dp[i][i-penny[i]]+dp[]]></description><category></category></item><item><title><![CDATA[剑指offer-丑数]]></title><link>https://blog.youkuaiyun.com/ccnnli/article/details/76875322</link><guid>https://blog.youkuaiyun.com/ccnnli/article/details/76875322</guid><author>ccnnli</author><pubDate>Tue, 08 Aug 2017 09:54:22 +0800</pubDate><description><![CDATA[题目：因子只包含2,3,5的数称作丑数。1为第一个丑数。求第1500个丑数；


int Min(int x,int y,int z )
{
	int min=x<y? x:y;
	return min<z? min:z;
	
}
//丑数
int GetUglyNumber(int index)
{
	
	vector  vec;
	vec.push_back(1);
	int i=0;
]]></description><category></category></item><item><title><![CDATA[剑指offer-两个链表的第一个公共点]]></title><link>https://blog.youkuaiyun.com/ccnnli/article/details/76864760</link><guid>https://blog.youkuaiyun.com/ccnnli/article/details/76864760</guid><author>ccnnli</author><pubDate>Tue, 08 Aug 2017 09:30:02 +0800</pubDate><description><![CDATA[题目：
输入两个链表，输出两个链表的第一个公共结点。
分析：
由于单链表的结点，每个结点只有一个next指针，所以 两个链表的连接形式像是一个Y型。
经分析：若两个链表存在公共结点，则公共结点位于链表尾部。若我们从链表尾部开始往前比较，最后一个相同的结点就是我们要找的结点。可以在单链表中，只能从头结点开始按顺序遍历，最后才能到达尾结点。类似于后进先出。联想到可以用栈来解决该问题。
分别把]]></description><category></category></item></channel></rss>