<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[codekiller_的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/codekiller_</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; codekiller_]]></copyright><item><title><![CDATA[【算法证明】NP完全性问题证明]]></title><link>https://blog.youkuaiyun.com/codekiller_/article/details/74066885</link><guid>https://blog.youkuaiyun.com/codekiller_/article/details/74066885</guid><author>codekiller_</author><pubDate>Sat, 01 Jul 2017 16:08:14 +0800</pubDate><description><![CDATA[一、问题描述
证明如下问题是NP-完全的：给定一个无向图G=（V，E）和整数k，求G中一个规模为k的团以及一个规模为k的独立集，假定他们都是存在的。
二、问题证明
可以将最大团问题归约到此问题。假设要求任意图G(V, E)中大小为k 的团，可以在图G 中添加k 个相互独立的顶点，得到新图G'。这新加的k 个顶点保证了图G'存在大小为k 的独立集，同时又不影响到原图的团。


（1）可以]]></description><category></category></item><item><title><![CDATA[[538 Convert BST to Greater Tree]搜索二叉树的数值计算]]></title><link>https://blog.youkuaiyun.com/codekiller_/article/details/73650474</link><guid>https://blog.youkuaiyun.com/codekiller_/article/details/73650474</guid><author>codekiller_</author><pubDate>Fri, 23 Jun 2017 17:44:07 +0800</pubDate><description><![CDATA[一、题目解析
给定一个搜索二叉树，然后将该搜索树的每一个节点Node[i]进行转换，其中具体转换规则为每一个节点的新值等于该二叉搜索树中所有比他大的节点值与其本身值的和，依次将该二叉树的每一个节点值按照以上规则进行重新计算，输出新二叉树的根节点，详情举例如下：

Input: The root of a Binary Search Tree like this:
              ]]></description><category></category></item><item><title><![CDATA[【LeetCode515 Find Largest Value in Each Tree Row】二叉树每行的最大值]]></title><link>https://blog.youkuaiyun.com/codekiller_/article/details/73650052</link><guid>https://blog.youkuaiyun.com/codekiller_/article/details/73650052</guid><author>codekiller_</author><pubDate>Fri, 23 Jun 2017 17:04:18 +0800</pubDate><description><![CDATA[一、问题描述
给定一个二叉树，二叉树每一行都有一个最大值，将该值保存到一个数组中，最后输出该数组。举例如下：给定二叉树，输出数组[1,3,9]

Input: 

          1
         / \
        3   2
       / \   \  
      5   3   9 

Output: [1, 3, 9]
二、思路详解

这一题是遍历树，给树的每]]></description><category></category></item><item><title><![CDATA[[LeetCode198 House Robber]数组中的动态规划求最值问题]]></title><link>https://blog.youkuaiyun.com/codekiller_/article/details/73649970</link><guid>https://blog.youkuaiyun.com/codekiller_/article/details/73649970</guid><author>codekiller_</author><pubDate>Fri, 23 Jun 2017 16:58:29 +0800</pubDate><description><![CDATA[一、题目解析
给定一个数组，数组中的每一位相当于一座房子，数组值代表偷窃该房子所能得到的财富值。现在一个小偷要对这么多房子进行偷窃，规定偷窃连续的两个房子将会触发报警系统，算法需要输出小偷在这条街上偷窃所能得到的最大财富值。
二、思路解析
用动态规划的思路解决这个问题非常清晰，首先确定该问题的子问题。以n代表这条街上的房子数，由于无法偷窃相邻的两个房子，所以子问题即为money(n-2)+m]]></description><category></category></item><item><title><![CDATA[【LeetCode 300 Longest Increasing Subsequence】最长递增子序列]]></title><link>https://blog.youkuaiyun.com/codekiller_/article/details/73649369</link><guid>https://blog.youkuaiyun.com/codekiller_/article/details/73649369</guid><author>codekiller_</author><pubDate>Fri, 23 Jun 2017 16:13:22 +0800</pubDate><description><![CDATA[一、题目描述
给定一个乱序整数序列，要求算法在这个乱序序列中找到最长递增子序列，并且返回长度。例如，给定序列[10,9,2,5,3,7,101,18]，最长的递增子序列为[2,3,7,101]，因此返回长度为4，最长递增子序列可以有多个，只是其拥有一个固定的最大长度值。算法要求在O(n^2)的时间复杂度中完成，也可以尽可能的优化到O(n log n)的时间复杂度。
二、思路分析
根据分治算法]]></description><category></category></item><item><title><![CDATA[【LeetCode 4. Median of Two Sorted Arrays】两个有序数组的中位数求解]]></title><link>https://blog.youkuaiyun.com/codekiller_/article/details/73028924</link><guid>https://blog.youkuaiyun.com/codekiller_/article/details/73028924</guid><author>codekiller_</author><pubDate>Sun, 11 Jun 2017 14:54:52 +0800</pubDate><description><![CDATA[一、题目描述
给定两个已经排好序的数组nums1和nums2，长度分别是m和n，要求求出这两个有序数组合并后的新数组中的中位数，并要求整个程序实现的时间复杂度为O(log(m+n))。例如数组1 nums1=[1,3]，给定的数组2为 nums2=[2]，则输出数组[1,2,3]的中位数2.0，若是[1,2]和[3,4]，则输出中位数2.5。
二、思路解析
这道题的难点在于控制时间复杂度，由]]></description><category></category></item><item><title><![CDATA[【LeetCode64 Minimum Path Sum】动态规划计算路径]]></title><link>https://blog.youkuaiyun.com/codekiller_/article/details/73008380</link><guid>https://blog.youkuaiyun.com/codekiller_/article/details/73008380</guid><author>codekiller_</author><pubDate>Sat, 10 Jun 2017 21:38:20 +0800</pubDate><description><![CDATA[一、问题描述
给定一个m*n的方格，其中每一个方格中都有一个数字，现在从方格最左上方移动到最右下方，每次移动只能是想下移动或者向右移动。对于每一条路径都对应一个路径和的概念，即为该路径中所有方格中数字的和，需要求出最左上方到最右下方的所有路径中，路径和最小的那个，并且输出该路径和。
二、思路解析
这道题思路较为简单，同样的利用动态规划思路去解决问题，计算出从起点到m*n矩阵中每一个方格的最短]]></description><category></category></item><item><title><![CDATA[【LeetCode62 Unique Paths】动态规划计算路径]]></title><link>https://blog.youkuaiyun.com/codekiller_/article/details/73008244</link><guid>https://blog.youkuaiyun.com/codekiller_/article/details/73008244</guid><author>codekiller_</author><pubDate>Sat, 10 Jun 2017 21:20:28 +0800</pubDate><description><![CDATA[一、问题描述
给定一个m*n的方格，起始点为方格的最左上方，终点为方格的最右下方，一个机器人只能向下以及向右移动，需要求出机器人从起始点到终点一共有多少种不重复的路径。问题的输入为方格的长度m以及宽度n，输出为不同路径的数量。
二、思路分析
这道题用动态规划的方法非常简单，计算出机器人从起点开始到方格内每一个格子的不同路径数，并将路径数量保存到一个相同大小的m*n的矩阵中M，那么我们只需要输]]></description><category></category></item><item><title><![CDATA[【LeetCode2 Add Two Numbers】链表求和详解]]></title><link>https://blog.youkuaiyun.com/codekiller_/article/details/73008030</link><guid>https://blog.youkuaiyun.com/codekiller_/article/details/73008030</guid><author>codekiller_</author><pubDate>Sat, 10 Jun 2017 20:51:28 +0800</pubDate><description><![CDATA[一、问题描述
给定两个非空链表，其中链表中的每一个节点都是一个十以内的数字，链表的倒序数字串代表相应的十进制数值，因此每一个链表都会对应一个数值。题目中给定两个链表，需要求出其数值和，并将该数值和也相同的形式用链表表达，返回聊表的头结点。例如，给定聊表2->4->3和5->6->4，其代表的数值分别为342和465，数值和为907，将807用链表倒序表示为7->0->8，因此输出7->0->8链]]></description><category></category></item><item><title><![CDATA[[leetCode-516Longest Palindromic Subsequence]最长回文子序列DP算法详解]]></title><link>https://blog.youkuaiyun.com/codekiller_/article/details/73003557</link><guid>https://blog.youkuaiyun.com/codekiller_/article/details/73003557</guid><author>codekiller_</author><pubDate>Sat, 10 Jun 2017 19:23:32 +0800</pubDate><description><![CDATA[一、题目描述
问题较为简单，给定一个字符串，如"aasasbc"，计算出该字符串中最长的回文子序列长，即为"aaa"的长度3，回文子序列是指顺序和倒序均为同一个字符串的序列，另外，要求所输入的字符串长度不大于1000。
二、思路解析
分治算法去解决这道题是第一思路，即对于一个长度为n的字符串，对应于一个分治算法的状态数组dp[n-1][n-1]，该数组的值对应字符串中最长回文子序列的长度，如]]></description><category></category></item><item><title><![CDATA[【Leetcode508】Most Frequent Subtree Sum题解]]></title><link>https://blog.youkuaiyun.com/codekiller_/article/details/71358722</link><guid>https://blog.youkuaiyun.com/codekiller_/article/details/71358722</guid><author>codekiller_</author><pubDate>Sun, 07 May 2017 19:18:18 +0800</pubDate><description><![CDATA[一、题目描述
给定一个二叉树的根节点，定义二叉树中的子树和为该子树中所有节点值的和。二叉树中每一个节点都可以为子树根节点，所得子树和也包括该节点，输出所给二叉树中出现频率最高的子树和值，若存在连个或者多个值出现频率相同且最高，则将其以任意顺序输出。
二、思路解析
二叉树中每一个节点都对应一棵子树，因此每一个节点也对应一个子树和的值。这题可分为两个过程解决，第一步是求出所给二叉树中每一个节点所]]></description><category></category></item><item><title><![CDATA[[LeetCode63]Unique pathII动态规划解题示例]]></title><link>https://blog.youkuaiyun.com/codekiller_/article/details/71349598</link><guid>https://blog.youkuaiyun.com/codekiller_/article/details/71349598</guid><author>codekiller_</author><pubDate>Sun, 07 May 2017 18:24:37 +0800</pubDate><description><![CDATA[一、题目描述
给定一个网格，网格中的每一个方格分别用0和1表示，其中0表示该方格可以通过，1表示该方格有障碍物，无法通过。因此该网格可以用一个n*m的矩阵M表示，其中矩阵元素只包括1和0，求M[0][0]到M[n-1][m-1]有多少种不同的路径可以到达，每次移动只能向下或者向右移动。比如给定方格为以下方格矩阵，
[
  [0,0,0],
  [0,1,0],
  [0,0,0]
]
则输出]]></description><category></category></item><item><title><![CDATA[【leetCode523】Continuous Subarry Sum]]></title><link>https://blog.youkuaiyun.com/codekiller_/article/details/70804681</link><guid>https://blog.youkuaiyun.com/codekiller_/article/details/70804681</guid><author>codekiller_</author><pubDate>Wed, 26 Apr 2017 15:33:48 +0800</pubDate><description><![CDATA[一、题目解析 	这道题属于middle类型的题，题干为给一个非负的整数型数列，和一个整数k，若在该数列的子序列中，存在一个长度大于2且子序列和为k的整数倍的子序列，则返回true,否则返回false。例如，给序列[23,2,4,6,7]以及整数k=6，则返回true，因为子序列[2,4]是一个连续子序列且其和为6，能被k整除。
二、思路分析
这题本人思路较为简单，但是算法执行的速度非常慢。总提]]></description><category></category></item><item><title><![CDATA[【70 Climbing Stairs】菲波那切数列解决思路]]></title><link>https://blog.youkuaiyun.com/codekiller_/article/details/70211155</link><guid>https://blog.youkuaiyun.com/codekiller_/article/details/70211155</guid><author>codekiller_</author><pubDate>Mon, 17 Apr 2017 15:05:47 +0800</pubDate><description><![CDATA[一、原题描述

一个n级台阶，每次只能登一级台阶或者两级台阶，输出攀登到台阶顶端一共有多少种不同的方法。

You are climbing a stair case. It takes n steps to reach to the top.Each time you can either climb 1 or 2 steps. In how many 

distinct ways]]></description><category></category></item><item><title><![CDATA[【LeetCode450】Delete Node in BST二叉搜索树删除节点]]></title><link>https://blog.youkuaiyun.com/codekiller_/article/details/69934580</link><guid>https://blog.youkuaiyun.com/codekiller_/article/details/69934580</guid><author>codekiller_</author><pubDate>Sun, 09 Apr 2017 21:16:58 +0800</pubDate><description><![CDATA[一、原题重现
题干中给定一个二叉搜索树（BST）的根节点以及一个给定的值，要求我们删除BST中与该值相等的节点，并且删除节点后，该树仍旧满足二叉搜索树的性质。下面举出一个例子

root = [5,3,6,2,4,null,7]
key = 3

    5
   / \
  3   6
 / \   \
2   4   7

给定的有效值Key为 3，因此我们需要在该BST中删除值为3的节]]></description><category></category></item><item><title><![CDATA[【Leetcode513 Find Bottom left Tree Value】树的遍历]]></title><link>https://blog.youkuaiyun.com/codekiller_/article/details/68924627</link><guid>https://blog.youkuaiyun.com/codekiller_/article/details/68924627</guid><author>codekiller_</author><pubDate>Fri, 31 Mar 2017 14:12:22 +0800</pubDate><description><![CDATA[一、题目解析
本题题意清晰，已知一个二叉树，找出这颗二叉树中最左下方的那个节点，并返回节点值。意思即找出二叉树中最高层中左侧开始的第一个叶子节点，因此在代码解析中只要找出满足两个条件的点就可以。第一个是处于最高层叶子节点处，第二是本层所在的第一个叶节点，后面的代码实现也是围绕着这两条件对节点进行选择。
例如：
Input:

        1
       / \
      2   3
]]></description><category></category></item><item><title><![CDATA[前端开发框架之AngularJS篇]]></title><link>https://blog.youkuaiyun.com/codekiller_/article/details/68924183</link><guid>https://blog.youkuaiyun.com/codekiller_/article/details/68924183</guid><author>codekiller_</author><pubDate>Fri, 31 Mar 2017 13:38:45 +0800</pubDate><description><![CDATA[1、  前端，是一种GUI软件
在一个Web系统中，用户通过浏览器上网，输入URL的那一刻起，就意味着通过HTTP协议发送一个远程请求，服务端会将一个URL请求映射到一个具体的URL，然后将关联的资源分别返回给浏览器端，浏览器拿到了这些资源之后，负责解释、执行并呈现（渲染）。
从本质上讲，所有Web应用都是一种运行在网页浏览器中的软件，这些软件的图形用户界面（Graphical User In]]></description><category></category></item><item><title><![CDATA[【543 Diameter of Binary Tree】深度优先搜素思维运用]]></title><link>https://blog.youkuaiyun.com/codekiller_/article/details/66478705</link><guid>https://blog.youkuaiyun.com/codekiller_/article/details/66478705</guid><author>codekiller_</author><pubDate>Sun, 26 Mar 2017 20:24:39 +0800</pubDate><description><![CDATA[一、题目解析
这道题题意就是一个二叉树找出路径长度最大的两个点，并将这两个点的路径长度输出为结果。需要注意的就是路径不一定非得经过根节点，这也是容易犯错的地方，也是这道题的难点所在。
二、思路分析
这道题首先很容易想到从根节点开始，分别计算左右子节点的深度然后相加即为结果，这种思路是最容易误入的。因为最长路径很可能是不经过根节点的。那么从深度优先搜索DFS的思想出发，从某一节点开始，计算路过]]></description><category></category></item><item><title><![CDATA[RealSense技术在SR300摄像头上的应用]]></title><link>https://blog.youkuaiyun.com/codekiller_/article/details/63685891</link><guid>https://blog.youkuaiyun.com/codekiller_/article/details/63685891</guid><author>codekiller_</author><pubDate>Sun, 19 Mar 2017 16:53:55 +0800</pubDate><description><![CDATA[RealSense技术在SR300摄像头上的应用
一、          实感摄像头
1、 RealSense技术
在计算机的发展过程中我们始终没有抛弃键盘和鼠标，前几年win8和触屏的配合形成
了一种新的电脑使用模式，但是依然没有打破传统的单向互动的使用习惯。直到RealSense技术的出现，计算机开始拥有了感知能力，并且带来全新的人机交互体验。
英特尔RealSense（实感）技术前]]></description><category></category></item><item><title><![CDATA[【LeetCode24】Swap Nodes in Pairs题解]]></title><link>https://blog.youkuaiyun.com/codekiller_/article/details/63685718</link><guid>https://blog.youkuaiyun.com/codekiller_/article/details/63685718</guid><author>codekiller_</author><pubDate>Sun, 19 Mar 2017 16:47:53 +0800</pubDate><description><![CDATA[一、题目详解
由于原题大家都在原网站上能看到，这里就不把题目原样复制粘贴下来了。主要意思就是给定一个链表，将其链表内节点两两交
换，最后返回交换后链表的头部。
二、思路详解
这道题可以用递归的方法将诶绝而且时间复杂度相对较小，我用的是循环读取链表节点，然后两两交换节点。实现起来比较麻烦
的地方就是节点之间交换操作，注意交换节点后指针重新指向新节点就行，其余并没有多少难度。
三、代码实现]]></description><category></category></item></channel></rss>