<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[JANESTAR的专栏]]></title><description><![CDATA[学无止境]]></description><link>https://blog.youkuaiyun.com/JANESTAR</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; JANESTAR]]></copyright><item><title><![CDATA[程序跳转到 mainret = main(argc, argv, envp); 抛出异常Unhandled exception]]></title><link>https://blog.youkuaiyun.com/JANESTAR/article/details/52768238</link><guid>https://blog.youkuaiyun.com/JANESTAR/article/details/52768238</guid><author>JANESTAR</author><pubDate>Sun, 09 Oct 2016 16:49:14 +0800</pubDate><description><![CDATA[在项目中遇到这种异常：程序跳转到 mainret = main(argc, argv, envp); 抛出异常，violation access。并且程序有时候正常有时候崩溃。这种错误经常需要花费很长时间去找这个错误。
总结一下我遇到这种错误时的思路：
1，访问异常，一般很有可能是指针访问异常。考虑指针有没有初始化，在类的构造函数里面有没有初始化成员指针。因为如果不初始化指针，指针的值是不确定]]></description><category></category></item><item><title><![CDATA[CMake配置OpenCV 时静态链接与动态链接的选择]]></title><link>https://blog.youkuaiyun.com/JANESTAR/article/details/52729457</link><guid>https://blog.youkuaiyun.com/JANESTAR/article/details/52729457</guid><author>JANESTAR</author><pubDate>Mon, 03 Oct 2016 21:12:59 +0800</pubDate><description><![CDATA[方法：
添加OpenCV_STATIC 选项，设置为不勾选，在cmake配置的时候就会选择动态库
否则，cmake 配置的时候会设置为静态库]]></description><category></category></item><item><title><![CDATA[值为NULL的对象指针]]></title><link>https://blog.youkuaiyun.com/JANESTAR/article/details/52589538</link><guid>https://blog.youkuaiyun.com/JANESTAR/article/details/52589538</guid><author>JANESTAR</author><pubDate>Mon, 19 Sep 2016 21:28:51 +0800</pubDate><description><![CDATA[值为NULL的对象指针


　　相信大家对NULL不会很陌生，NULL 是一个标准规定的宏定义，用来表示空指针常量，当一个指针变量被赋值为NULL时，表示它不再指向任何有效地址，无法在访问任何数据。在VS2012库文件stdio.h中有如下定义：

1 #ifdef __cplusplus
2 #define NULL    0
3 #else
4 #define NULL    ((v]]></description><category></category></item><item><title><![CDATA[面试题之输入n求和为m的所有组合]]></title><link>https://blog.youkuaiyun.com/JANESTAR/article/details/52572488</link><guid>https://blog.youkuaiyun.com/JANESTAR/article/details/52572488</guid><author>JANESTAR</author><pubDate>Sun, 18 Sep 2016 10:52:54 +0800</pubDate><description><![CDATA[背包问题。
问题：
输入两个整数 n 和 m，从数列1，2，3.......n 中 随意取几个数,使其和等于 m ,要求将其中所有的可能组合列出来.
分析：
由该题可知是典型的背包问题，根据该数是否加入进行递归运算。
解法：采用0-1背包的思想，使用递归方法：

　　当选择n时，就用剩下的n-1填满 m-n;

　　当不选择n是，就用剩下的n-1填满m；

   　注意的是，]]></description><category></category></item><item><title><![CDATA[Leetcode-Serialize and Deserialize Binary Tree]]></title><link>https://blog.youkuaiyun.com/JANESTAR/article/details/52400701</link><guid>https://blog.youkuaiyun.com/JANESTAR/article/details/52400701</guid><author>JANESTAR</author><pubDate>Thu, 01 Sep 2016 16:13:50 +0800</pubDate><description><![CDATA[解题思路：
利用先序遍历递归遍历二叉树，对于空节点也将其作为一个节点看待，这样序列化的二叉树可以看成是一个完全二叉树。
反序列化的时候，递归解析字符串，根据 根节点--左子树--右子树的规则构造二叉树。


/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeN]]></description><category></category></item><item><title><![CDATA[375. Guess Number Higher or Lower II]]></title><link>https://blog.youkuaiyun.com/JANESTAR/article/details/52366744</link><guid>https://blog.youkuaiyun.com/JANESTAR/article/details/52366744</guid><author>JANESTAR</author><pubDate>Tue, 30 Aug 2016 10:09:54 +0800</pubDate><description><![CDATA[We are playing the Guess Game. The game is as follows:



I pick a number from 1 to n. You have to guess which number I picked.

Every time you guess wrong, I'll tell you whether the number I pi]]></description><category></category></item><item><title><![CDATA[Count Numbers with Unique Digits]]></title><link>https://blog.youkuaiyun.com/JANESTAR/article/details/52229058</link><guid>https://blog.youkuaiyun.com/JANESTAR/article/details/52229058</guid><author>JANESTAR</author><pubDate>Wed, 17 Aug 2016 11:16:12 +0800</pubDate><description><![CDATA[解题思路一：
找规律，动态规划。
f(n):长度为n的数字中包含的独立数位的数字个数。
f(1) = 10 (0,1,2,3,4,...9)
f(2)=9*9  ,因为十位只能是（1,2,...9），对于十位的每个数，个位只能取其余的9个数字。
f(3)=f(2)*8=9*9*8
f(10)=9*9*8*7...*1
f(11)=0=f(12)=f(13)....
class So]]></description><category></category></item><item><title><![CDATA[Next Permutation]]></title><link>https://blog.youkuaiyun.com/JANESTAR/article/details/52223312</link><guid>https://blog.youkuaiyun.com/JANESTAR/article/details/52223312</guid><author>JANESTAR</author><pubDate>Tue, 16 Aug 2016 17:36:49 +0800</pubDate><description><![CDATA[原理简介：
1，从数组尾端开始遍历，找到第一个nums[i]
2，要求下一个子序列，那么我们需要在1中得到的单调子数组中找到一个比nums[i]大的数字，并且要尽量小。这样才能保证是下一个子序列。由于子数组是单调递减的，那么我们从数组尾端开始找到第一个比nums[i]大的，那么这个数字就是满足我们要求的数字。将其与nums[i]交换
3，交换之后，大于i组成的子数组仍然是递减的。所以我们只需]]></description><category></category></item><item><title><![CDATA[283. Move Zeroes]]></title><link>https://blog.youkuaiyun.com/JANESTAR/article/details/52173996</link><guid>https://blog.youkuaiyun.com/JANESTAR/article/details/52173996</guid><author>JANESTAR</author><pubDate>Wed, 10 Aug 2016 16:51:17 +0800</pubDate><description><![CDATA[简单题：
解题思路：
1，插入排序（O（n））


class Solution {
public:
    void moveZeroes(vector& nums) {
		int size = nums.size();
		int index=0;
		for(int i=0;i<size;i++)
		{
			if(nums[i]!=0)
				nums[index++]=n]]></description><category></category></item><item><title><![CDATA[142. Linked List Cycle II]]></title><link>https://blog.youkuaiyun.com/JANESTAR/article/details/52172572</link><guid>https://blog.youkuaiyun.com/JANESTAR/article/details/52172572</guid><author>JANESTAR</author><pubDate>Wed, 10 Aug 2016 16:00:13 +0800</pubDate><description><![CDATA[解法一：

如果链表中环 有n个结点，指针P1在链表上向前移动n步，然后两个指针以相同的速度向前移动。
 当第二个指针指向环的入口结点时，第一个指针已经围绕着环走了一圈又回到了入口结点。
所以首先要得到环中结点的数目。

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *  ]]></description><category></category></item><item><title><![CDATA[377. Combination Sum IV]]></title><link>https://blog.youkuaiyun.com/JANESTAR/article/details/52163357</link><guid>https://blog.youkuaiyun.com/JANESTAR/article/details/52163357</guid><author>JANESTAR</author><pubDate>Tue, 09 Aug 2016 15:47:10 +0800</pubDate><description><![CDATA[解题思路：
该题对时间有要求，我们使用之前用过的回溯法将会超时。因为回溯法遍历所有种可能，类似于穷举，时间效率肯定不高。
换个思路，我们采用动态规划的思想来看看。
动态规划状态方程：
dp[target]=sum(dp[target-nums[i]]) (for i=0..num.size()-1)
dp[target] 代表一共有多少种可能。
那么从target-nums[i] 变为]]></description><category></category></item><item><title><![CDATA[282. Expression Add Operators]]></title><link>https://blog.youkuaiyun.com/JANESTAR/article/details/52154617</link><guid>https://blog.youkuaiyun.com/JANESTAR/article/details/52154617</guid><author>JANESTAR</author><pubDate>Mon, 08 Aug 2016 19:08:53 +0800</pubDate><description><![CDATA[解题思路：深搜
遍历所有可能的情况，终止条件为表达式计算的结果等于target。注意，这里要使用long 类型保存整数，否则会溢出。我在vs2013，win32模式下使用long同样不能通过
"3456237490", 9191 -> []

这个案例，改用long long 才可以。
具体解析可以参考文末的这篇文章，讲的很好，主要要注意乘法情况下如何计算表达式的值。

class ]]></description><category></category></item><item><title><![CDATA[QT 4.7.2的一个bug：QGLWidget::grabFrameBuffer() ignores withAlpha parameter]]></title><link>https://blog.youkuaiyun.com/JANESTAR/article/details/52143415</link><guid>https://blog.youkuaiyun.com/JANESTAR/article/details/52143415</guid><author>JANESTAR</author><pubDate>Sun, 07 Aug 2016 17:06:40 +0800</pubDate><description><![CDATA[参考https://bugreports.qt.io/browse/QTBUG-7545
Bugs 报告：
QGLWidget::grabFrameBuffer() ignores withAlpha parameter



在我的项目中用到了老版本的QT，也是为了维护老版本，没有改成最新版的QT，结果我在对项目进行添加功能时需要使用一个截屏的功能，将在QT中显示的模型保存成图片，但]]></description><category></category></item><item><title><![CDATA[二叉树中和为某一值的路径]]></title><link>https://blog.youkuaiyun.com/JANESTAR/article/details/52033297</link><guid>https://blog.youkuaiyun.com/JANESTAR/article/details/52033297</guid><author>JANESTAR</author><pubDate>Tue, 26 Jul 2016 10:26:27 +0800</pubDate><description><![CDATA[二叉树中和为某一值的路径


参与人数：4182时间限制：1秒空间限制：32768K 算法知识视频讲解



题目描述

输入一颗二叉树和一个整数，打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。




解题思路：二叉树的先序遍历

/*
struct TreeNode {
	int val;
	s]]></description><category></category></item><item><title><![CDATA[风格之争：Coroutine模型 vs 非阻塞/异步IO(callback)]]></title><link>https://blog.youkuaiyun.com/JANESTAR/article/details/52020642</link><guid>https://blog.youkuaiyun.com/JANESTAR/article/details/52020642</guid><author>JANESTAR</author><pubDate>Mon, 25 Jul 2016 09:21:03 +0800</pubDate><description><![CDATA[原帖地址： http://www.kuqin.com/system-analysis/20110910/264592.html







我们在设计一个服务器的软件架构的时候，通常会考虑几种架构：多进程，多线程，非阻塞/异步IO(callback) 以及Coroutine模型。

多进程
这种模型在linux下面的服务程序广泛采用，比如大名鼎鼎的apache。主进程负责监]]></description><category></category></item><item><title><![CDATA[71. Simplify Path]]></title><link>https://blog.youkuaiyun.com/JANESTAR/article/details/51991492</link><guid>https://blog.youkuaiyun.com/JANESTAR/article/details/51991492</guid><author>JANESTAR</author><pubDate>Fri, 22 Jul 2016 09:10:06 +0800</pubDate><description><![CDATA[思路：利用vector模拟栈
技巧：利用getline实现字符串切分
解法1：leetcode上别人的代码


string simplifyPath(string path) {
    string res, tmp;
    vector stk;
    stringstream ss(path);
    while(getline(ss,tmp,'/')) {
       ]]></description><category></category></item><item><title><![CDATA[Recover Binary Search Tree]]></title><link>https://blog.youkuaiyun.com/JANESTAR/article/details/51916805</link><guid>https://blog.youkuaiyun.com/JANESTAR/article/details/51916805</guid><author>JANESTAR</author><pubDate>Fri, 15 Jul 2016 13:11:25 +0800</pubDate><description><![CDATA[解题思路：中序遍历。BST中存在一对被交换的元素，那么可以肯定，较大节点被交换到较小的那颗子树，较小节点被交换到较大的那颗子树了。那么会存在前一个节点大于当前节点的情况，第一次找到的这种情况，那么前一个节点就是第一个我们要找的节点。后面再出现这种情况的话，那么当前结点就是我们要找的第二个节点。最后再交互二个节点的值就好了。
递归
/**
 * Definition for a binary t]]></description><category></category></item><item><title><![CDATA[关于Validate Binary Search Tree的总结]]></title><link>https://blog.youkuaiyun.com/JANESTAR/article/details/51915581</link><guid>https://blog.youkuaiyun.com/JANESTAR/article/details/51915581</guid><author>JANESTAR</author><pubDate>Fri, 15 Jul 2016 10:39:53 +0800</pubDate><description><![CDATA[关于Validate Binary Search Tree的总结


1，BST的定义：
1) 左子树的所有值都比根节点小；
2) 右子树的所有值都比根节点大；
3) 左右子树也必须满足上面两个条件。


需要注意的是，左子树的所有节点都要比根节点小，而非只是其左孩子比其小，右子树同样。


根据BST定义来写递归程序。因为需要每个节点为根节点分别遍历其左右子树。假设一共有]]></description><category></category></item><item><title><![CDATA[44. Wildcard Matching]]></title><link>https://blog.youkuaiyun.com/JANESTAR/article/details/51908362</link><guid>https://blog.youkuaiyun.com/JANESTAR/article/details/51908362</guid><author>JANESTAR</author><pubDate>Thu, 14 Jul 2016 13:12:42 +0800</pubDate><description><![CDATA[Implement wildcard pattern matching with support for '?' and '*'.

'?' Matches any single character.
'*' Matches any sequence of characters (including the empty sequence).

The matching should cover]]></description><category></category></item><item><title><![CDATA[数据流中的中位数]]></title><link>https://blog.youkuaiyun.com/JANESTAR/article/details/51768490</link><guid>https://blog.youkuaiyun.com/JANESTAR/article/details/51768490</guid><author>JANESTAR</author><pubDate>Mon, 27 Jun 2016 14:40:16 +0800</pubDate><description><![CDATA[数据流中的中位数


参与人数：1245时间限制：1秒空间限制：32768K 算法知识视频讲解



题目描述

如何得到一个数据流中的中位数？如果从数据流中读出奇数个数值，那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值，那么中位数就是所有数值排序之后中间两个数的平均值。

解题思路：维护一个大堆和一个小堆，大堆表示序列前一半数，小堆表示序列后一半]]></description><category></category></item></channel></rss>