删除K个数字,使剩下的数字串最大

题目: 一个n位的数,去掉其中的k位,问怎样去掉使得留下来的那个(n-k)位的数最大? 分析: 可以直接用贪心来求解,每次寻找从头开始的连续递减序列,删除递减序列的最后一个元素,重复K次,最后剩下的数字串组成的数字最大。 比如: “13787323” 第一次,递减序列只有1,删除1...

2012-09-29 11:29:03

阅读数:3840

评论数:1

原地矩阵旋转

题目: 原地矩阵旋转,只使用O(1)空间进行旋转 分析: 假如是一个一维数组,我们很容易进行旋转,但是对于二维矩阵,没有好的思路,不过大体思路应该和一维类似,找到网上有人介绍,直接转载过来,还有点看不明白,但是代码实现了,作者是正确的。 --------------------------...

2012-09-17 14:52:17

阅读数:959

评论数:4

连续的正数序列,使得和为指定值

题目: 连续的正数序列,使得和为指定值 分析: 以前做过类似的题目,求解两个数字和为指定值这种题目,采用先排序,然后从两头开始查找的方式,这题其实也差不多,采用两个指针,不过这次两个指针同时从头开始查找,初始化时first指针指向1,second指针指向2,如果curr_sum小于指定的...

2012-09-17 10:59:16

阅读数:620

评论数:0

在一维坐标轴上有n个区间段,求重合区间最长的两个区间段。

题目: 在一维坐标轴上有n个区间段,求重合区间最长的两个区间段。 分析: 这题和《编程之美》时间安排的题目类似,可以用队列来表示,首先按照各个区间的左数字进行排序,然后依次入队列尾,如果遇到区间的右数,从队列头找其对应的左数,如果队列头是不是其对应的左数,说明这个区间被其他区间完全包围,...

2012-09-16 18:58:03

阅读数:4058

评论数:0

不改变正负数相对顺序重新排列数组

看到网上一个解法,空间复杂度O(1),时间复杂度O(nlogn) 做一个小算法题,提提神 一个未排序整数数组,有正负数,重新排列使负数排在正数前面,并且要求不改变原来的正负数之间相对顺序。 思考的过程就略去了,直接说结果吧。我想到的算法,空间复杂度为O(1),时间复杂度为O(N*...

2012-09-16 11:02:09

阅读数:926

评论数:0

各种字符串匹配算法总结

题目:一种可做特殊用途的字符串匹配算法 http://www.ahcit.com/?p=1965 这篇论文里面介绍了BF,KMP,ZZL等字符串匹配算法

2012-09-16 10:41:49

阅读数:584

评论数:0

动态数组和vector

网上看到有人写到动态数组的东西,感觉写的非常好,就直接转载过来了,其中有些小错误,帮他修改发上来。 -------------------------------------------------------------------- 目录(?)[-] C/C++语言实现动...

2012-09-13 10:38:58

阅读数:3283

评论数:0

一致性hash算法 - consistent hashing

目录(?)[-] 一致性 hash 算法( consistent hashing ) 基本场景hash 算法和单调性consistent hashing 算法的原理 环形hash 空间把对象映射到hash 空间把cache 映射到hash 空间把对象映射到cache考察cache...

2012-09-13 09:30:29

阅读数:558

评论数:0

高效使用VIM

高效使用vim (Efficient Editing With vim) 原英文教程见 (Original tutorial in English) http://jmcpherson.org/editing.html About copyright: I sent e-ma...

2012-09-11 22:29:31

阅读数:878

评论数:0

寻找丑数

题目: 我们称只包含因子2,3,5的数为丑数,比如9,但是14不是,因为包含因子7。我们要求找到前1500个丑数。 分析: 直观的方法就是穷举1,2,3...n,每次得到一个数,我们穷举它的因子2,3,5,穷除这些因子后,数最后只剩1,表示这个数是丑数,但是这种方法显然不好,计算量大。 另...

2012-09-09 15:31:23

阅读数:1027

评论数:0

判断一个后序遍历是否正确

题目: 一棵二叉查找树,得到一个后序遍历,判断这个后序遍历是否正确。 分析: 方法1,根据中序和后序 根据中序和后序,可以唯一得到一棵二叉树。一棵二叉查找树的中序显然就是所有数字的正常排序,所以,我们首先将所有的后序得到的数字排序,时间复杂度是O(nlogn),然后根据后序和中序遍历,判断...

2012-09-09 15:00:47

阅读数:1207

评论数:0

蓄水池抽样问题

题目: 微软电面问到的问题,前面提了一大堆背景,最后归结为一个问题,如何在连续的网络流量中,等概率随机抽取1个数据包。 分析: 参加电面时,还没看过蓄水池抽样问题,后来回来一搜,这就是典型的蓄水池抽样问题,不过当时自己也想到了一种解法,使用一个变量保存数据包,从1到i个数据包,每次遇到第i个...

2012-09-06 16:02:17

阅读数:2773

评论数:0

尾序列问题

问题: 在《编程珠玑》一书中,提到字符串旋转问题,比如有字符串ab旋转得到字符串ba,那么可以通过(a'b')'得到,其中“ ' ”表示整个字符串旋转。 在这个问题中,比如"abace"通过在不同位置旋转,可以得到"eabac","ceaba&...

2012-09-05 11:19:46

阅读数:851

评论数:0

高效合并两个有序数组

问题: 两个有序数组,合并成一个有序数组,假设第一个数组空间足够容纳两个数组。 分析: 考虑到a数组很大,可以直接在a数组上进行合并,但是要讲究效率。如果单纯从前往后合并,那么效率会非常低,因为a数组后面的数字需要不停的移动。换一种思路,我们采用从后往前合并,首先计算出总长度,设置一个指针从...

2012-09-03 10:00:08

阅读数:12523

评论数:5

二维数组中的查找

问题: 给定一个二维数组,这个二维数组的每行、每列数字都是递增的,查找某个整数是否在二维数组内。 分析: 这题和堆排序有类似,查找过程中从右上方的数字开始,如果该数字比查找的数字小,那么该数字所在行可以删除,不用继续考虑;如果该数字比查找的数字大,那么该数字所在列可以删除。这样,每次执行,都...

2012-09-02 20:46:38

阅读数:1767

评论数:1

蚂蚁从一个角爬到对角的平均时间

题目: 一个unit cubic,一只蚂蚁在一个角,准备在这个cubic的edge上开始爬动。蚂蚁爬过一条边的时间为1,它在任意一个角的时候,往其他三个方向去的概率都是1/3.问蚂蚁从一个角爬到对角的平均时间是多少? 分析: 直接转载的: -----------------------...

2012-09-02 11:25:01

阅读数:802

评论数:0

计算可能组合数目的数学期望

题目: 在一个盒子里面有N根绳子,这个N根绳子的中间部分放在盒子里面,不可见,但是这个N根绳子的两端露在盒子外面,所以我们能看到2N个绳头。 随机选取2个绳头并打结,直到所有的绳头都打上结。最后这些打结的绳子会形成许多环。请问环数目的期望值是多少? 分析: 以下内容直接从另外的博客转载的...

2012-09-02 10:33:37

阅读数:1088

评论数:0

向量旋转问题

问题: 《编程珠玑》里面典型的向量旋转问题。 分析: 直接转载的,认为写的比较好 -------------------------------------------------------- 问题描述如下:Rotate vector x[n] left by d positi...

2012-09-02 10:08:01

阅读数:719

评论数:0

复杂链表的复制

问题: 有一个复杂链表,其结点除了有一个m_pNext指针指向下一个结点外,还有一个m_pSibling指向链表中的任一结点或者NULL。 结构体定义如下: struct complex_node { int value; struct complex_node *next; s...

2012-09-01 17:05:08

阅读数:528

评论数:0

把数组排成最小的数

问题: 输入一个正整数数组,将它们连接起来排成一个数,输出能排出的所有数字中最小的一个。例如输入数组{32,  321},则输出这两个能排成的最小数字32132。 分析: 采用比较的方式,通过分析发现,如果m和n两个数字连成新的字符串,如果该mn>nm,那么n应该放在m之前,这样产...

2012-09-01 16:19:52

阅读数:503

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭