
算法
yangcs2009
这个作者很懒,什么都没留下…
展开
-
设计一个Cache系统 【双向链表+哈希表】
今天去面试,面试官让我设计一个cache系统,要求保证最近使用的数据不能被移除出cache,也就是每次添加一个cache项的时候,把最旧的cache项移除出去。 我只记得操作系统里貌似有个差不多的cache算法,记不起名字来,更别提数据结构了。一开始我执着于用一种数据结构来实现,可是每说出一种,都被面试官指出这种方式的不足。最后终于开窍了,想出了 哈希表+双向链表 的方法。当时也不知道到转载 2014-08-02 21:11:43 · 2580 阅读 · 0 评论 -
一致性hash算法 —— consistent hashing
consistent hashing算法早在1997年就在论文Consistenthashing and random trees中被提出,目前在cache系统中应用越来越广泛;1基本场景比如你有N个cache服务器(后面简称cache),那么如何将一个对象object映射到N个cache上呢,你很可能会采用类似下面的通用方法计算object的hash值,然后均匀的映射到到N个cache;转载 2016-04-12 11:37:41 · 624 阅读 · 0 评论 -
面试中的二叉树问题总结【Java版】
package Algorithms.tree;import java.util.ArrayList;import java.util.Iterator;import java.util.LinkedList;import java.util.List;import java.util.Queue;import java.util.Stack;/** * REFS: *转载 2014-10-16 13:42:11 · 5379 阅读 · 0 评论 -
常用算法时间空间复杂度
Know Thy Complexities!Hi there! This webpage covers the space and time Big-O complexities of common algorithms used in Computer Science. When preparing for technical interviews in the past, I foun转载 2014-10-15 13:36:17 · 3928 阅读 · 0 评论 -
高楼扔鸡蛋问题
http://www.datagenetics.com/blog/july22012/转载 2014-10-29 14:50:34 · 1220 阅读 · 0 评论 -
二叉树的常见问题及其解决程序
二叉树的常见问题有如下几个,如果解决好了,就跟链表一样轻松:唯一不一样的是,二叉树是非线性结构。常见的问题如下:二叉树的问题1.二叉树三种周游(traversal)方式:[cpp] view plaincopy二叉树的问题 1.二叉树三种周游(traversal)方式: 2.怎样从顶部开始逐层打印二叉树结点数据 3.如何判断一棵二叉树是否是平衡二叉树转载 2014-09-29 13:36:09 · 3694 阅读 · 0 评论 -
从头到尾彻底理解KMP
从头到尾彻底理解KMP作者:July时间:最初写于2011年12月,2014年7月21日晚10点 全部删除重写成此文,随后的半个多月不断反复改进。1. 引言 本KMP原文最初写于2年多前的2011年12月,因当时初次接触KMP,思路混乱导致写也写得非常混乱,如此,留言也是“骂声”一片。所以一直想找机会重新写下KMP,但苦于一直以来对KMP的理解始终不够,故才迟转载 2014-10-25 14:25:12 · 735 阅读 · 0 评论 -
LeetCode 高频题目
LeetcodeSingle Number II LeetcodeSingle NumberLeetcodeBest Time to Buy and Sell Stock IIILeetcodeBest Time to Buy and Sell Stock IILeetcodeBest Time转载 2014-10-24 11:46:44 · 1542 阅读 · 0 评论 -
负载均衡算法小结
互联网分布式系统中,很多服务是数据存储相关的,海量访问量下,直接访问存储介质是抗不住的,需要使用cache,cache集群的负载均衡算法就成为一个重要的话题,这里对现有的负载均衡算法进行一些总结。BTW:虽然是Cache负载均衡算法小结,其实可以说是负载均衡算法小结,只是针对Cache应用场景罢了。负载均衡算法主要有:Static算法Random算法Round ro转载 2014-09-14 21:55:13 · 1015 阅读 · 0 评论 -
程序员面试常见海量数据处理问题
教你如何迅速秒杀掉:99%的海量数据处理面试题作者:July出处:结构之法算法之道blog前言 一般而言,标题含有“秒杀”,“99%”,“史上最全/最强”等词汇的往往都脱不了哗众取宠之嫌,但进一步来讲,如果读者读罢此文,却无任何收获,那么,我也甘愿背负这样的罪名,:-),同时,此文可以看做是对这篇文章:十道海量数据处理面试题与十个方法大总结的一般抽象性总结。转载 2014-09-24 10:52:42 · 1906 阅读 · 0 评论 -
最大子序列、最长递增子序列、最长公共子串、最长公共子序列、字符串编辑距离
最大子序列最大子序列是要找出由数组成的一维数组中和最大的连续子序列。比如{5,-3,4,2}的最大子序列就是 {5,-3,4,2},它的和是8,达到最大;而 {5,-6,4,2}的最大子序列是{4,2},它的和是6。你已经看出来了,找最大子序列的方法很简单,只要前i项的和还没有小于0那么子序列就一直向后扩展,否则丢弃之前的子序列开始新的子序列,同时我们要记下各个子序列的和,最后找到和最大的子序转载 2014-08-30 09:50:33 · 681 阅读 · 0 评论 -
程序员如何快速准备面试中的算法
前言 我决定写篇短文,即为此文。之所以要写这篇文章,缘于微博上常有朋友询问,要毕业找工作了,如何备战算法。尽管在微博上简单梳理过,如下图所示: 但因字数限制,许多问题无法一次性说清楚,故特撰此文着重阐述下:程序员如何快速准备面试中的算法,继而推荐一些相关的书籍或资料。顺便也供节后跳槽、3月春季招聘小高潮、及6月毕业找工作的朋友参考。备战面试中算法的五个步骤转载 2014-08-02 20:45:16 · 1046 阅读 · 1 评论 -
从数据流中随机取m个数
Q:有一个很大很大的输入流,大到没有存储器可以将其存储下来,而且只输入一次,如何从这个输入流中等概率随机取得m个记录。 A:开辟一块容纳m个记录的内存区域,对于数据流的第n个记录,以m/n的概率将其留下(前m个先存入内存中,从第m+1个开始),随机替换m个已存在的记录中的一个,这样可以保证每个记录的最终被选取的概率都是相等的。 面试官视角: 这个题目除了需要给出正确解答以外转载 2014-08-05 14:58:06 · 2879 阅读 · 0 评论 -
N皇后问题
N皇后问题是一个经典的问题,在一个N*N的棋盘上放置N个皇后,每行一个并使其不能互相攻击(同一行、同一列、同一斜线上的皇后都会自动攻击)。一、 求解N皇后问题是算法中回溯法应用的一个经典案例回溯算法也叫试探法,它是一种系统地搜索问题的解的方法。回溯算法的基本思想是:从一条路往前走,能进则进,不能进则退回来,换一条路再试。 在现实中,有很多问题往往需要我们把其所有可能穷举出来,然后从中转载 2014-09-10 15:59:00 · 1079 阅读 · 0 评论 -
面试题:赛马问题
据说,这是Google的面试题。面试题目如下:一共有25匹马,有一个赛场,赛场有5个赛道,就是说最多同时可以有5匹马一起比赛。假设每匹马都跑的很稳定,不用任何其他工具,只通过马与马之间的比赛,试问,最少得比多少场才能知道跑得最快的5匹马?(不能使用撞大运的算法)很明显这是一个算法题,网上有很多贴子在讨论这个问题,不过都没有给出一个明确的答案。我想了想,想到下面的一个算法:1)分成5组A转载 2014-08-16 11:06:40 · 1104 阅读 · 0 评论 -
经典面试题:设计包含min函数的栈,O(1)空间实现方法
题目:定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。要求函数min、push以及pop的时间复杂度都是O(1)。注:这是06年一道Google的面试题. 先来说个常规解和他的一个优化,常规解的时间复杂度符合要求,但需要线性的额外空间.常规解(参考 http://zhedahht.blog.163.com/blog/static/254111742007128952转载 2014-08-07 10:27:47 · 880 阅读 · 0 评论 -
1-N的自然数中,少了一个,找出这个数
问题1:1-N的自然数中,少了一个,找出这个数(1)求和-容易溢出Sum=1+2+...+N=(N+1)N/2,然后遍历数列每次从S1中减去当前的数字,最后剩下的数字就是所求。为了防止溢出我们可以每次在S1大于一定的数字后,就去减,然后继续求和,再大于就继续减,以此类推。[java] view plaincopyprint?public int find_M转载 2014-08-05 14:03:20 · 8246 阅读 · 0 评论 -
确定一个数转化成二进制后是1的位的个数
写个小程序确定一个数转化成二进制后是1的位的个数很久以前就开始流传的一道微软面试题。[cpp] view plaincopyint func(x) { int countx = 0; while(x) { countx ++; x = x&(x-1转载 2014-08-05 13:22:04 · 813 阅读 · 0 评论 -
找工作知识储备(3)---从头说12种排序算法:原理、图解、动画视频演示、代码以及笔试面试题目中的应用
0、前言 从这一部分开始直接切入我们计算机互联网笔试面试中的重头戏算法了,初始的想法是找一条主线,比如数据结构或者解题思路方法,将博主见过做过整理过的算法题逐个分析一遍(博主当年自己学算法就是用这种比较笨的刷题学的,囧),不过又想了想,算法这东西,博主自己学的过程中一直深感,基础还是非常重要的,很多难题是基础类数据结构和题目的思想综合发散而来。比如说作为最基本的排序算法就种类很多,而事...转载 2014-07-27 20:35:25 · 4194 阅读 · 0 评论