Home » 算法

Leetcode 295. Find Median from Data Stream

题目链接295. Find Median from Data Stream   在一个有序数组中找中位数,但需要支持再数组中添加新的元素。本来是有序里的,可以很轻易就查到中位数,但如果添加新数字后,不一定有序。如果先对数组排序,那代价就比较大了,每次排序时间复杂度O(n*log(n)),看discuss发现了一种很巧妙的解法,可以把添加数据的时间复杂度降低到O(log(n)) ,查询中位数O(1)。

Read More »

Leetcode 236. Lowest Common Ancestor of a Binary Tree

题目链接 236. Lowest Common Ancestor of a Binary Tree   根据LCA的定义,二叉树中最小公共祖先就是两个节点p和q最近的共同祖先节点,LCA的定义没什么好解释的,主要是这道题的解法。

Read More »

最小二乘法的极大似然解释

  最开始学习机器学习的时候,首先遇到的就是回归算法,回归算法里最最重要的就是最小二乘法,为什么损失函数要用平方和,而且还得是最小?仔细想想最小二乘法视乎很合理,但是合理在哪,怎么用数学方法来证明它合理。

Read More »

Leetcode 19.Remove Nth Node From End of List

题目链接:19. Remove Nth Node From End of List   删除单链表中的倒数第n个节点,链表中删除节点很简单,但这道题你得先知道要删除哪个节点。在我的解法中,我先采用计数的方式来确定删除第几个节点。另外我在头节点之前额外加了一个节点,这样是为了把删除头节点的特殊情况转换为一般情况,代码如下。

Read More »

Leetcode 24. Swap Nodes in Pairs

题目链接 Leetcode 24. Swap Nodes in Pairs   给你一个链表,交换相邻两个节点,例如给你 1->2->3->4,输出2->1->4->3。

Read More »

Leetcode 6. ZigZag Conversion

原题链接:6.ZigZag Conversion   题目名称『曲折变换』,但给的样例只有三行,看不出到底怎么样曲折变化,所以这里我再补充一个样例,大家肯定一下就懂了。

Read More »

使用反向传播算法(back propagation)训练多层神经网络

  本文翻译自http://galaxy.agh.edu.pl/~vlsi/AI/backp_t_en/backprop.html,大概介绍下反向传播的基本原理。

Read More »

Leetcode 516. Longest Palindromic Subsequence

题目链接 Given a string s, find the longest palindromic subsequence’s length in s. You may assume that the maximum length of s is 1000.

Read More »

Leetcode 114. Flatten Binary Tree to Linked List

Leetcode 114. Flatten Binary Tree to Linked List   题目意思很简单,就是把一棵二叉数转换为链表,虽然题目中没说以什么样的形式转换,但看下样例就很容易看出来,是以先序遍历的次序转换成链表。这里链表节点还是treenode,只不过它的左节点为空而已。

Read More »

Leetcode 467. Unique Substrings in Wraparound String

题目链接:Unique Substrings in Wraparound String 这里加段英文,不是为了凑字数,而是为了让别人搜索题目的时候能搜到我的博客。。 Consider the string s to be the infinite wraparound string of “abcdefghijklmnopqrstuvwxyz”, so s will look like this: “…zabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcd….”.

Read More »