- 博客(11)
- 资源 (1)
- 收藏
- 关注
原创 最少回纹切割数(Palindrome Partitioning II)
题目:给定一个字符串,把这个字符串切割成若干段,使得这些小段都是回纹串,求最少要切几刀(即小段回文串的个数减一)。分析:先用动态规划法求得任意子串是否是回纹,用str表示字符串,用f[i,j]表示从字符i到字符j组成的子串是否是回纹,则j-i f[i,j] = str[i] == str[j]其他情况,f[i,j] = f[i+1,j-1] && str[i]==s
2014-07-21 21:36:39
747
原创 求所有子集合,不能包含重复集合 (Subsets II)
题目:给定一个集合包含一些整数,整数有重复,求这个集合的所有子集和,子集和不能有重复。分析:对于数组中的每个数来说,子某个子集和中,这个数要么被选到,要么没被选到,只有0和1两种状态。介绍两种方法 1. 二进制法,用set去重。2. 用递归实现。下面分别介绍这两种方法。1. 二进制法:这个方法有一个限制就是数组集合的大小不能超过int的位的数目(
2014-06-23 12:30:18
1852
原创 求全排列,不重复(Permutations II)
题目:给定一个集合包含一些整数,整数有重复,求这个集合的所有排列,排列不能有重复。分析:有两种方法 1. 调用next_permutation函数,直到此函数返回false。2. 用递归实现。下面分别介绍这两种方法。1. 调用next_permutaion函数next_permutaion函数是用来求比当前排列按字典序大的下一个序列。
2014-06-23 12:14:03
1181
原创 UFLDL 学习笔记——稀疏自动编码机(sparse autoencoder)
自动编码机是一种出入层节点数等于输出层节点数的三层神经网络,只有中间一层隐藏层。
2014-06-05 13:29:01
1622
原创 找出数组中只出现一次的数(single number )
给定一个数组,里面除了一个数字出现了一次外,其他所有数字都出现了三次,求找出这个出现一次的数字,请用O(n)时间复杂度和O(1)空间复杂度分析:如果其他数字都出现两次,只要把所有数字都异或一下就能剔除出现两次的数字,但是这里出现三次,怎么样才能把出现三次的数字都剔除呢?可以把一个整数看成一个是由(sizeof(int)*8)的bit组成的数字,对于某个出现三次的数字来说,当它出现三次后
2014-05-18 12:01:22
745
原创 水池蓄水问题(Trapping Rain Water)
给定一个数组,表示连续的地表的高度,求当下雨时,这个连续的地表最多能蓄多少水,比如给定数组[0,1,0,2,1,0,1,3,2,1,2,1]得到结果为6,如下图所示:分析对于每个柱子,找到其左右两边最高的柱子,该柱子能容纳的面积就是min(max_left, max_right) - height,这个是问题的本质所在,理解了这个下面的方法就容易理解了。 方
2014-05-13 01:03:48
2156
原创 第k个字典序全排列(kth permutation)
给定一个数字n和k,表示求一个由n个数字组成的序列的第k个字典序排列。比如给定n=3,k = 2则求由数字【1,2,3】组成的所有序列中的安字典序排列的第k个。不难看出这三个数字组成的序列的按字典序排序如下:1,2,31,3,22,1,32,3,13,1,23,2,1所以得到的第k=2个序列就是1,3,2。分析:可以用上一篇文章所说的NextPe
2014-05-11 14:11:17
4802
原创 下一个字典序列(next permutation)
给定一个序列求这个序列的安字典序排序的下一个序列,最大序列的下一个序列为最小序列,比如:1,2,3 → 1,3,23,2,1 → 1,2,31,1,5 → 1,5,1分析:我们可以从右往左遍历数组,找到从右开始第一个不按照升序排序的数字,记为x,然后再次从右往左遍历一次找到第一个比x大的数字,记为y,然后对调x和y,最后将y之后的数字全部翻转。举例:
2014-05-10 14:10:14
2273
原创 旋转数组的二分查找
旋转数组是指原来排好序的数组经过旋转后形成局部有序的数组,形如【4,5,6,7,1,2,3】就是【1,2,3,4,5,6,7】经过旋转后得到的数组。题目:给定一个数x能否在log(n)内找到这个数是否存在于旋转数组中分析:这个题目的难点在于如何二分地查找一个数,显然局部有序这个条件是十分有用的。我们先定义数组的左边部分为从左往右一直递增的数组,如上诉例子的左边部分为【4,5,6
2014-05-02 00:03:06
1009
原创 Logistic回归与sigmoid
Logistic回归是一种常用的分类方法,虽然名字叫回归,但它的确是一种用于分类的方法,常用于线性分类或者配合其他应用如神经网络中的每一层可以看成一个logistic回归问题。Logistic 回归本质上是一个线性回归,只不过是在线性回归之后再加了一层激发函数,通常采用sigmoid函数作为激发函数,激发函数的作用是将线性回归的结果映射到0~1区间里。Sigmoid函数的函数图像如下所示:
2014-04-21 17:37:15
3282
原创 神经网络与BP算法
神经网络(neural network,缩写NN),是一种模仿生物神经网络的结构和功能的数学模型或计算模型。神经网络由大量的人工神经元联结进行计算。大多数情况下人工神经网络能在外界信息的基础上改变内部结构,是一种自适应系统。现代神经网络是一种非线性统计性数据建模工具,常用来对输入和输出间复杂的关系进行建模,或用来探索数据的模式。 下图是一个典型的三层神经网络结构示意图,一般的神经
2014-04-20 12:11:27
1960
一个只有两千行代码的多进程负载均衡的http服务器
2015-06-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人