摘要:
Excel表格中的列是从A开始编号的,A,B,C,...,Z,AA,AB,....,AZ,.....给出列号(从1开始),返回给定的列名。这是某互联网公司的面试题,很简单的题但是面试的时候居然写出bug了,经面试官一提醒顿时乱了阵脚,最终也没能改对。特用此文来记住这次惨痛的教训 1 void convert(int col ,char * seq,int n) 2 { 3 if(col0) 7 { 8 int t=col%26; 9 col/=26;10 if(t==0)11 {12 seq... 阅读全文
摘要:
Valid NumberValidate if a given string is numeric.Some examples:"0"=>true" 0.1 "=>true"abc"=>false"1 a"=>false"2e10"=>trueNote:It is intended for the problem statement to be ambiguous. You should gather all requirements up front before 阅读全文
摘要:
Given a sorted linked list, delete all nodes that have duplicate numbers, leaving onlydistinctnumbers from the original list.For example,Given1->2->3->3->4->4->5, return1->2->5.Given1->1->1->2->3, return2->3. 1 ListNode *deleteDuplicates(ListNode *head) { 2 // 阅读全文
摘要:
要对vector中的自定义类型进行排序,首先需要提供一个函数bool comp(const Interval & a, const Interval & b)来定义类型的排序准则然后调用std::sort(intervals.begin(),intervals.end(),comp) 写了几个小的测试用例也都通过了,但是当集成在类中的时候编译遇到问题,Line 30: no matching function for call to 'sort(std::vector::iterator, std::vector::iterator, )'刚开始以为是类型不对, 阅读全文
摘要:
Given a matrix ofmxnelements (mrows,ncolumns), return all elements of the matrix in spiral order.For example,Given the following matrix:[ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ]]You should return[1,2,3,6,9,8,7,4,5].这道打印矩阵的题以前遇到很多次,但写代码的时候还是有很多种情况没有考虑到,导致花费挺多时间。题意:给定一个m*n的矩阵,从外围一层一层的打印出矩阵中的数据思路:使用两个结点分 阅读全文
摘要:
Unique PathsA robot is located at the top-left corner of amxngrid (marked 'Start' in the diagram below).The robot can only move either down or right at any point in time. The robot is trying to reach the bottom-right corner of the grid (marked 'Finish' in the diagram below).How many 阅读全文
摘要:
由于项目需求,希望能够用javascript复制富文本格式的数据,例如全选一个网页Ctrl+C, Ctrl+V到一个word文档中,数据还是原来的格式,显示出来的样子也都和原来一样。现在希望使用javascript实现同样的功能。由于系统的限制,javascript往系统剪切板上放置的数据只有两种格式Text和URL。具体使用如下:function CopyToClipBoard(){ var clipBoardContent="abcdefg"; window.clipboardData.setData("Text",clipBoardContent) 阅读全文
摘要:
对于给定表达式,如5+10*(6-4)-10/5,求出表达式的值。表达式求值这类的题目非常常见,本文也没有提出什么新的方法,只是在看书之余练练手。方法一:对于一个给定的表达式,如何求它所对应的值。首先如果能够确定整个表达式中最后被执行的运算符,那么根据运算符的位置可以把整个表达式分成两部分,对这两部分再分别求解,然后将求得的值合并。输入:5+10*(6-4)-10/5输出:23注意,由于通常获得的求值表达式都是字符串,对于操作数不能直接操作,需要进行转化囧:发现一个bug,由于运算数都是整数,而'+','-','*','/'四个操 阅读全文
摘要:
AC自动机是著名的多模式匹配算法,给出n个单词和一篇含有m个单词的文章,找出n个单词中有多少是在文章中出现过。AC自动机的构造分为三步:构造trie树,构造fail指针,模式串匹配。而常用的单模式串匹配主要用kmp算法,多模式匹配与之有相似之处,因此要学习AC自动机,需要有trie树和kmp算法的知识。下边链接中有对AC自动机以及它的构造比较清晰的描述,笔者也是在一次面试中第一次接触到AC自动机,学习之后特来实现一下http://www.cppblog.com/mythit/archive/2009/04/21/80633.html 1 HDU 2222 2 3 #include <s. 阅读全文
摘要:
给定两个数组A和B,数组的长度相同都为n,两个数组都分别有序,要求出两个数组中所有数的中位数。分析:两个数组中总共有2n个数,有两个中位数,这里取较小的那一个。要找出2n个数的中位数,其实就是找出其中第n大的数,用两个下标p,q分别指向A,B两个数组中的第一个元素,如果A中元素较小就移动p,如果B中元素较小就移动q,并计录移动的次数,直到找到第n大的元素为止,总共的移动次数n-1,时间复杂度为O(n)上述方法的时间复杂度已经比较好了,但是每次只移动一位,没有很好的利用两个数组分别有序的条件,下面提供一个O(logn)的方法。具体步骤:每次取A数组和B数组的中间元素p和q,比较两个数的大小,如果 阅读全文
摘要:
一个有趣的智力题,给定12个大小相同的球,其中只有一个小球的重量和别的小球不同,如何用天枰称三次来找出其中与众不同的小球,并且判断偏重还是偏轻。 将小球进行编号,1~12,取出1~4号小球为一组A,取出5~8号小球为一组B,剩下的9~12号小球为一组C 将A组和B组小球进行称量,有三种结果: 1. 平衡。那么问题小球只可能存在于C组的4个小球9~12中,从C中取出小球9,并从A或B中随意取出另一个... 阅读全文
摘要:
使用范围:实现数据字典,进行数据的判重,集合求交集基本原理:基于bitmap,bitmap中用一个bit位来表示一个数字,而Bloomfilter是用多个bit位是否同时存在来判定元素是否存在。它的实现用到了位数组和k个hash函数,存入一个元素时,用k个hash函数分别求值,并将相应的bit位置1,当查找的时候,根据k个hash值,到k个位置查找,如果k个位置都存在,表明该元素存在,如果有一个bit位不存在表明元素不存在。很明显这个过程并不保证查找结果是百分百正确。同时它也不支持删除一个已经插入的关键字,因为该关键字对应的位会牵动其它的关键字,一个简单的改进是使用countingbloom 阅读全文
摘要:
有这样一块土地,可以被划分为M*N块正方形小块,每块面积是一平方英寸,第i行第j列的小块可以表示成P(i,j),这块土地高低不平,每一小块地P(i,j)都有自己的高度H(i,j),一场倾盆大雨后,由于这块地地势高低不同,许多低洼的地方都积存了不少降水,如果已经知道了这块土地的详细信息,求出它最多能积存多少立方英寸的降水分析:先分析一些比较容易求出的格子,例如边界,边界上积水上一定为0,从边界上最低的格子x开始,它就像是一个有洞的水桶,桶的容量取决于最低的那个洞,假设这个格子的高度为h,那么它相邻格子y的水位不会超过h,如果y的高度小于h,那么y的水位将是h,可以继续对y周围的格子进行灌水,直到 阅读全文
摘要:
poj 1806题意:已知有n种货币,编号为1~n,以及它们之间的瑞换比例。现在Nick有第fir种货币meney元,问你Nick能不能通过这些货币的瑞换规则,使自己拿到更多的fir货币。思路:bellman_ford。判断有没有正环,有的话Nick就可以无限次使用这个正环使自己的货币增值。 1 /** 2 * @file code.c 3 * @author <kong@KONG-PC> 4 * @date Sun Nov 04 21:54:40 2012 5 * 6 * @brief 求汇率转换问题 7 * 采用Bellman_ford算法求是否存在... 阅读全文
摘要:
求RMQ最简单的方法是遍历区间,时间复杂度O(n), 但是当查询次数很多的时候,时间效率并不高。可以用线段树把算法优化到O(logn) (在线段树中保存线段的最值),不过sparse_table算法是较好的,用O(nlogn)的时间进行预处理,然后用O(1)时间进行查询。预处理:预处理使用DP的思想,f(i, j)表示[i, i+2^j - 1]区间中的最小值,我们可以开辟一个数组专门来保存f(i, j)的值。例如,f(0, 0)表示[0,0]之间的最小值,就是num[0], f(0, 2)表示[0, 3]之间的最小值, f(2, 4)表示[2, 17]之间的最小值注意, 因为f(i, j)可 阅读全文
摘要:
树的公共祖先问题可以分为在线法和离线法,在线法就是来一个请求就处理一次,离线法就是收集所有请求然后统一给出回复。1. 在线法。LCA可以转换为RMQ1) 对树进行dfs,访问每个节点时要记录节点的层次,同时要记录每个节点第一次出现的位置,对于节点个数为n的树,最后会形成一个2n-1长度的序列2) 如果要查询节点a和节点b的公共祖先,只需找出a和b节点在在序列中第一次出现的位置,形成了一个从a到b的子序列, 对应序列中层数最小的节点即为公共祖先。3) 因此把LCA转化为RMQ问题。对于给定序列求出指定区间中的最小值 1 #include <stdio.h> 2 #include &l 阅读全文
摘要:
转载http://dsqiu.iteye.com/blog/1689505二分图大讲堂——彻底搞定最大匹配数(最小覆盖数)、最大独立数、最小路径覆盖、带权最优匹配文本内容框架:§1图论点、边集和二分图的相关概念和性质§2二分图最大匹配求解匈牙利算法、Hopcroft-Karp算法§3二分图最小覆盖集和最大独立集的构造§4二分图最小路径覆盖求解§5二分图带权最优匹配求解Kuhn-Munkers算法§6小结每章节都详细地讲解了问题介绍,算法原理和分析,算法流程,算法实现四部分内容,力求彻底解决问题。§1图论点、边集和二分图的相关 阅读全文
摘要:
转载 http://www.cnblogs.com/wawlian/archive/2012/06/18/2553061.html 网络爬虫是捜索引擎抓取系统的重要组成部分。爬虫的主要目的是将互联网上的网页下载到本地形成一个或联网内容的镜像备份。这篇博客主要对爬虫以及抓取系统进行一个简单的概述。一、网络爬虫的基本结构及工作流程 一个通用的网络爬虫的框架如图所示: 网络爬虫的基本工作流程如下: 1.首先选取一部分精心挑选的种子URL; 2.将这些URL放入待抓取URL队列; 3.从待抓取URL队列中取出待抓取在URL,解析DNS,并且得到主机的ip,并将URL对应的网页下载下来,存储进已下载网页 阅读全文
摘要:
转载:http://www.cnblogs.com/heaad/archive/2011/01/02/1924195.htmlBloom Filter是由Bloom在1970年提出的一种多哈希函数映射的快速查找算法。通常应用在一些需要快速判断某个元素是否属于集合,但是并不严格要求100%正确的场合。一.实例 为了说明Bloom Filter存在的重要意义,举一个实例: 假设要你写一个网络蜘蛛(web crawler)。由于网络间的链接错综复杂,蜘蛛在网络间爬行很可能会形成“环”。为了避免形成“环”,就需要知道蜘蛛已经访问过那些URL。给一个URL,怎样知道蜘蛛是否已经访问过呢?稍微想想,就.. 阅读全文
摘要:
写atoi函数的时候需要注意一下几点1. 字符串前的空白2. 字符串所表示数值的正负号3. 结束条件,遇到非数字或者字符'\0'结束4. 考虑溢出,分别与int值所能表示的最大(0x7fffffff)和最小值(0x8000000)进行比较5. 考虑异常输入情况下,用全局变量valid来标识,对于"+/-" "0" "+abc"需要进行区分 1 #define INT_MAX ((int)0x7FFFFFFF) 2 #define INT_MIN ((int)0x80000000) 3 //#define INT_MAX 阅读全文