<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[jbcsimple]]></title><description><![CDATA[算法与数据结构、编程、机器学习与数据挖掘]]></description><link>https://blog.youkuaiyun.com/jbctcx</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; jbctcx]]></copyright><item><title><![CDATA[二叉树相关问题编程实现（1）]]></title><link>https://blog.youkuaiyun.com/jbctcx/article/details/52641721</link><guid>https://blog.youkuaiyun.com/jbctcx/article/details/52641721</guid><author>jbctcx</author><pubDate>Fri, 23 Sep 2016 19:17:06 +0800</pubDate><description><![CDATA[二叉树相关问题编程实现]]></description><category></category></item><item><title><![CDATA[实现Huffman树]]></title><link>https://blog.youkuaiyun.com/jbctcx/article/details/52367652</link><guid>https://blog.youkuaiyun.com/jbctcx/article/details/52367652</guid><author>jbctcx</author><pubDate>Tue, 30 Aug 2016 11:13:10 +0800</pubDate><description><![CDATA[为了使得WPL即带权的外部结点路径最小，基本原则是：让权值大的结点离根近一些，权值小的结点离根远一些。实现方法：每次从未加入到树中的结点中选择两个权值最小的，即去权值最小和次小的结点作为左右子结点产生父结点，父结点的权值为这两个结点的权值之和，然后将父结点取代这两个结点带回去，继续循环。用数组作为存储结构。假定给定的外部结点权值数组中有m个元素，即有m个外部结点，那么内部结点就应该有m - 1个，]]></description><category></category></item><item><title><![CDATA[用堆实现优先队列]]></title><link>https://blog.youkuaiyun.com/jbctcx/article/details/52367223</link><guid>https://blog.youkuaiyun.com/jbctcx/article/details/52367223</guid><author>jbctcx</author><pubDate>Tue, 30 Aug 2016 10:35:19 +0800</pubDate><description><![CDATA[优先队列是一种数据结构，能够保证每次出队的是队列中优先级最高的元素（可以自己定义比较器），使用堆的堆顶元素维护这个优先级最高的元素，因为堆具有堆序性，堆顶元素要么是最小的，要么是最大的。
使用数组作为存储结构。创建一个容量为MaxSum的数组，使用一个变量n记录队列中的元素个数。实现队列所具有的offer(), poll(), peek(), isEmpty()操作。
（1）offer()：]]></description><category></category></item><item><title><![CDATA[关于有环链表的若干问题总结]]></title><link>https://blog.youkuaiyun.com/jbctcx/article/details/52230347</link><guid>https://blog.youkuaiyun.com/jbctcx/article/details/52230347</guid><author>jbctcx</author><pubDate>Wed, 17 Aug 2016 14:16:54 +0800</pubDate><description><![CDATA[1、判断一个链表是否有环

public boolean hasCircle(ListNode pHead) {
    if(pHead == null)
        return false;
    
    ListNode fast = pHead, slow = pHead;
    
    while(fast != null) {
        if(fast.next]]></description><category></category></item><item><title><![CDATA[不使用循环和判断求1到n的和]]></title><link>https://blog.youkuaiyun.com/jbctcx/article/details/52215263</link><guid>https://blog.youkuaiyun.com/jbctcx/article/details/52215263</guid><author>jbctcx</author><pubDate>Mon, 15 Aug 2016 22:02:40 +0800</pubDate><description><![CDATA[使用函数指针来实现，基于递归的思路，递归头也就是递归结束条件本应该用判断语句实现，现在不可以使用判断，那就使用两个函数来实现求和，一个针对递归头的情况，一个针对递归体的情况。在java中，实现函数指针的方法就是使用接口，然后交由实现它的类去实现具体方法。然后使用多台实现函数指针的功能。具体使用什么函数，看new出来的是什么。]]></description><category></category></item><item><title><![CDATA[数组中只出现一次的数字]]></title><link>https://blog.youkuaiyun.com/jbctcx/article/details/52186970</link><guid>https://blog.youkuaiyun.com/jbctcx/article/details/52186970</guid><author>jbctcx</author><pubDate>Thu, 11 Aug 2016 21:51:33 +0800</pubDate><description><![CDATA[思路：

（1）如果只有一个数字只出现一次，那么对所有数字做异或运算，由于一个数和自身做异或运算结果为0，而任何数字与0做异或运算结果为它本身，因此，最后的结果便是那个只出现一次的数。

（2）同样对所有数字做异或运算，结果应该是两个只出现一次的数字做异或运算的结果。由于这两个数字不同，因此结果非0。不妨假设结果的二进制表示中第index位非0，那么这两个唯一出现的数字在第index位上不]]></description><category></category></item><item><title><![CDATA[求一个数组中的最大值和最小值，要求将比较次数减小至3N/2]]></title><link>https://blog.youkuaiyun.com/jbctcx/article/details/52168742</link><guid>https://blog.youkuaiyun.com/jbctcx/article/details/52168742</guid><author>jbctcx</author><pubDate>Wed, 10 Aug 2016 10:06:18 +0800</pubDate><description><![CDATA[1、取双元素法
每次取两个元素，用较小的和最小值比较，用较大的和最大值比较，那么总共会取N/2次，每取一次会进行三次比较，第一次比较当前两个元素，第二次较小的和当前最小值比较，
第三次较大的和当前最大值比较，总的比较次数便是：3N/2。需要注意的是：
（1）输入数组的合法性检查（空指针或者数组的长度为0）；
（2）边界检查：输入数组只有1个元素，那么最小值和最大值均为该元素；
（3）初始]]></description><category></category></item><item><title><![CDATA[将二叉搜索树转换成升序的双向链表]]></title><link>https://blog.youkuaiyun.com/jbctcx/article/details/52168476</link><guid>https://blog.youkuaiyun.com/jbctcx/article/details/52168476</guid><author>jbctcx</author><pubDate>Wed, 10 Aug 2016 09:42:02 +0800</pubDate><description><![CDATA[分析：根据二叉搜索树：左 
数据域和左右指针域，而双向链表的结点包含数据域和指向前驱和后继的两个指针域，因此不需要创建任何新的结点，只需要在二叉树的基础上修改指针域即可。
将二叉树的遍历应用到解决问题的过程中。
1、递归实现
（1）递归调用函数将当前根结点的左子树转换成双向链表，返回最左边的结点；
（2）定位到左子树对应双向链表的最后一个结点；
（3）如果左子树不为空，那么将当前根结点]]></description><category></category></item><item><title><![CDATA[机器学习常见算法个人总结]]></title><link>https://blog.youkuaiyun.com/jbctcx/article/details/52167974</link><guid>https://blog.youkuaiyun.com/jbctcx/article/details/52167974</guid><author>jbctcx</author><pubDate>Wed, 10 Aug 2016 08:44:55 +0800</pubDate><description><![CDATA[机器学习常见算法个人总结（面试用）
By Kubi Code
 发表于 2015-08-16

文章目录

1. 朴素贝叶斯

1.1. 工作原理1.2. 工作流程1.3. 属性特征1.4. Laplace校准(拉普拉斯校验)1.5. 遇到特征之间不独立问题1.6. 优缺点
2. 逻辑回归和线性回归

2.1. 梯度下降法2.2. 其他优化方法2.3. 关于LR的过拟合问题：]]></description><category></category></item><item><title><![CDATA[GBDT：梯度提升决策树]]></title><link>https://blog.youkuaiyun.com/jbctcx/article/details/52167965</link><guid>https://blog.youkuaiyun.com/jbctcx/article/details/52167965</guid><author>jbctcx</author><pubDate>Wed, 10 Aug 2016 08:42:41 +0800</pubDate><description><![CDATA[GBDT：梯度提升决策树

字数2887 阅读1208 评论0 喜欢2

综述
  GBDT(Gradient Boosting Decision Tree) 又叫 MART（Multiple Additive Regression Tree)，是一种迭代的决策树算法，该算法由多棵决策树组成，所有树的结论累加起来做最终答案。它在被提出之初就和SVM一起被认为是泛化能力较强的算法。
  ]]></description><category></category></item><item><title><![CDATA[编程基本功与技巧小酌]]></title><link>https://blog.youkuaiyun.com/jbctcx/article/details/52167888</link><guid>https://blog.youkuaiyun.com/jbctcx/article/details/52167888</guid><author>jbctcx</author><pubDate>Wed, 10 Aug 2016 08:20:35 +0800</pubDate><description><![CDATA[本文为编程小酌，研究了一些经典的编程题目，如：二叉树、序列的排列组合、数组、链表、栈和队列、位运算等等，阐述了解题思路。]]></description><category></category></item></channel></rss>