面试
xws117123
微博地址 http://weibo.com/2139773423/profile?rightmod=1&wvr=6&mod=personinfo
展开
-
LIS的三种求解方法
1. O(n^2)传统的求解方法 ,思路为dp,状态转移方程为 dp[i]=max( dp[j]+1,1) 即到目前的i为止,对前面出现的a[j](ja[j]的情况 ,就使用状态转移方程。转移方程代表了两种可能 ,第一种为第i个元素自己成为一个上升的队列 ,或者是由于前面的a[j]dp[j]的基础之上形成了dp[i] = dp[j]+1 但前提是a[i]>a[j]# in原创 2015-05-02 17:28:53 · 2892 阅读 · 0 评论 -
列表 环 判定 初始位置
判定的方法比较简单 有两种方法 第一种是使用哈希表来存贮每一个节点 这样的话 当hashset[ ] 中出现两个相同的节点时就可以判断出来这是一样的了 然后他所在的那个位置就是环第一次出现的位置上第二种方法是用两个快慢指针来做 设定两个指针分别为p1 p2 , p1的移动速度为每次移动一个距离 ,而p2的移动速度为每次移动两个距离 ,这样 ,直到快指针到达链原创 2015-04-30 19:30:43 · 727 阅读 · 0 评论 -
最大连续子序列和
1.O(n^2)基本思路 对所有的情况进行遍历 , 对其实地点i进行遍历 ,为N , 对终止地址j进行遍历 ,为N ,对i到j之间的内容进行累加求和 , 为N 所以能为O(n^3)的解法 ,但是在进行对i到j之间的累加的时候有 sum[i,j]=sum[i,j-1]+a[j]所以可以压缩到O(n^2)# include int n;int a[500];int ma原创 2015-05-04 15:14:50 · 448 阅读 · 0 评论 -
HDU 1251 简单解法
这道题我是按照大白书(算法竞赛入门指南)的思想来的,经典的Trie树,不会用C++ 所以那C写的 定义了一个二维数组来存储node节点 然后又用了一个num[MAX]来存储各个前缀的数量一开始定义的MAX为10000; 果然RE了 他说只有一组测试 我以为随便写一个就好了 果然上当了 以为算法写错了 后来该到了1000000 过了 下面是AC代码 看到别的小原创 2015-05-06 20:17:17 · 617 阅读 · 0 评论 -
HDU 3336 一个next数组就解决了
这道题本来是用来练习KMP的 结果貌似一个next数组就可以解决 首先 对于每一个元字符串的前缀数组来说 至少会有一个与他匹配的 (其实就是他本身)那么 再看看next数组的含义 每一个不为0的next数就代表着有一个子串重复过一次 比如abab 的next数组为0001 b所在的1 就代表着长度为1 的原字符串的前缀数组重复过一个 即a重复了一次 这原创 2015-05-06 21:13:44 · 468 阅读 · 1 评论