现在位置: 首页 > 编程技术 > 算法学习 > 文章
2015年11月26日 算法学习 ⁄ 共 4483字 大数据量相关的算法实现已关闭评论 ⁄ 阅读 836 次
Top K Big问题 ###问题 从十万个数中找出前一百个较大的数,让你来实现你会如何实现? ###算法 一般人们很容易想到的算法是,在程序中定义一个大数组,将这十万个数进行排序,再定义一个元素为一百的数组将排在前一百是数选出放在这个数组中。 改进算法: 只要停下来想想很容易发现,在上面的算法中存在一个很大的问题,做了很多的无用功, 我们要的是前一百一个数,后面的九万九千九百个数的排序都的多余的,换句话说那是在浪...
阅读全文
2015年11月26日 算法学习 ⁄ 共 7792字 几道有意思的编程题已关闭评论 ⁄ 阅读 904 次
传话游戏 ####时间限制: 1000ms 内存限制: 256MB 描述 Alice和Bob还有其他几位好朋友在一起玩传话游戏。这个游戏是这样进行的:首先,所有游戏者按顺序站成一排,Alice站第一位,Bob站最后一位。然后,Alice想一句话悄悄告诉第二位游戏者,第二位游戏者又悄悄地告诉第三位,第三位又告诉第四位……以此类推,直到倒数第二位告诉Bob。两位游戏者在传话中,不能让其他人听到,也不能使用肢体动作来解释。最后,Bob把他所听到的话告...
阅读全文
2015年11月25日 算法学习 ⁄ 共 2032字 二叉树的遍历序列转换算法及其复杂度分析已关闭评论 ⁄ 阅读 945 次
由中序和先序遍历序列求后序遍历序列 何老师在视频中讲到:由先序和中序遍历序列可以来确定一棵二叉树,其方法如下: 根据先序遍历序列第一个结点确定根结点; 根据根结点在中序遍历序列中分割出左右两个子序列; 对左子树和右子树分别递归使用相同的方法继续分解。 根据此递归算法,求后序遍历序列,就可用代码写成以下形式: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22...
阅读全文
2015年11月24日 算法学习 ⁄ 共 1133字 随机数生成函数面试题已关闭评论 ⁄ 阅读 894 次
前阵子去某公司笔试,有道题是 已知随机数生成函数f(),返回0的概率是60%,返回1的概率是40%。根据f()求随机数函数g(),使返回0和1的概率是50%,不能用已有的随机生成库函数。 分析: 调用f()两次即可,会出现4种结果(0,0), (0,1), (1,0), (1,1),其中出现(0,1), (1,0)的概率是一样的,可以构造出等概率事件,比如出现(0,1)可返回0,出现(1,0)可返回1,如果出现其他两种情况则舍掉重新调用。 代码如下: 1 2 3 4 5 6...
阅读全文
2015年11月24日 算法学习 ⁄ 共 2388字 面试经历-百度,搜狗,腾讯滴滴打车,豆瓣已关闭评论 ⁄ 阅读 982 次
我的简历背景是主要做社区发现算法,之前做同构网络的社区发现算法,现在做异构网络的(学术网络为例),每位面试官都会让我介绍我做的内容。我写了图像处理的经历,百度和滴滴的面试官对这一经历很感兴趣。 百度 职位是机器学习。 第一面: 介绍我的社区发现论文,并给出论文中我认为创新的地方。我说了三点。 另外: 如何帮助超市定特价商品。 一个黑盒里是一个图,结构未知,只知道点的个数是n,边的个数是m,写公式给出两...
阅读全文
2015年11月24日 算法学习 ⁄ 共 1832字 一道关于背包的算法题已关闭评论 ⁄ 阅读 930 次
背包问题,1, 2, 3….i个物品,重量为Wi,价值为Vi 我们将在总重量不超过Y 的前提下,前i 种物品的总价值所能达到的最高值定义为MaxV(i , Y )。 MaxV(i , Y )的递推关系为: MaxV (0, Y ) = 0 MaxV (i , 0) = 0 如果Wi > Y , MaxV (i , Y ) = MaxV (i - 1, Y ) 如果Wi ≤ Y , MaxV (i , Y ) = max { MaxV (i - 1, Y ), Vi + MaxV (i - 1, Y - Wi ) } max用以计算最大值,前一个参数是指不放入物品i的总价值,后一个参数表示在可以...
阅读全文
2015年05月10日 Java, 算法学习 ⁄ 共 424字 输出一个字符串的所有排列组合已关闭评论 ⁄ 阅读 1109 次
课后题1.6的答案 package chapter1; public class Q6 { /** * @param args */ public static void main(String[] args) { String str = "jiangwenrou"; permute(str); } private static void permute(char[] str, int low, int high) { for (int i = low; i < high; i++) { char temp = str[i]; str[i] = str[low]; str[low] = temp; if (low + 1 == high) { System.out....
阅读全文
2015年05月09日 Java, 算法学习 ⁄ 共 1444字 数据结构与算法分析_Java语言描述课后题1.4、1.5已关闭评论 ⁄ 阅读 1030 次
这本书是有课后答案的,不过不全,而且也不是代码。自己做了之后觉得有点意思的放上来,不保证完全正确,仅供参考。 1.4 package chapter1; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; public class Q4 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub readFileByLines("...
阅读全文
2014年12月26日 Java, 算法学习 ⁄ 共 961字 最大子序列和问题已关闭评论 ⁄ 阅读 1148 次
这几天学习算法,遇到的第一个问题是最大子序列和.问题的描述为: 给定(可能有负数)整数序列A1, A2, A3..., An, 求这个序列中子序列和的最大值。(为方便起见,如果所有整数均为负数,则最大子序列和为0)。 public class maxsum { /** * @param args */ public static void main(String[] args) { int a[] = { -9, -2, -3, -5, -3 }; //int a[] = { -9, 1,4,9,-8,7,6,9,-1 }; //int a[] = {-6, 2, 4, -7, 5, 3,...
阅读全文