Given a string, replace each its character by the next one in the English alphabet (z would be replaced by a). Example For inputString = "crazy", the output should bealphabeticShift(inputString) = "dsbaz". 我的解答: def alphabeticShift(inp
2014-03-21 22:05 题目:给你N个盒子堆成一座塔,要求下面盒子的长和宽都要严格大于上面的.问最多能堆多少个盒子? 解法1:O(n^2)的动态规划解决.其实是最长递增子序列问题,所以也可以用O(n * log(n))的优化算法. 代码: // 11.7 n boxes are to stack up to a tower. Every box must be strictly smaller in width and height than the one right below i
2014-03-21 21:50 题目:给定一个MxN的二位数组,如果每一行每一列都是升序排列(不代表全展开成一个一维数组仍是升序排列的).请设计一个算法在其中查找元素. 解法:对于这么一个数组,有两点是确定的:1. 左上最小,右下最大:2. 左边不大于右边,上边不大于下边.根据这么个思路,你可以从左下或者右上开始查找,应该向左走向右走,还是向上走向下走,你懂的.用这种方法,可以在线性的时间内找出一个元素. 代码: // 11.6 Given an MxN matrix, each row an
2014-03-21 21:37 题目:给定一个字符串数组,但是其中夹杂了很多空串“”,不如{“Hello”, “”, “World”, “”, “”, “”, “Zoo”, “”}请设计一个算法在其中查找字符串. 解法:要么一次性将其中夹杂的空串去掉,要么在二分查找的过程中逐个跳过空串.反正整体思路仍是二分. 代码: // 11.5 Given an array of strings interspersed with empty string ""s. Find out if a
2014-03-21 21:28 题目:给定一个20GB大小的文本文件,每一行都是一个字符串.请设计方法将这个文件里的字符串排序. 解法:请看下面的注释. 代码: // 11.4 Given a file of 20GB containing strings, one word each line. How would you sort them all? // Answer: // 1. Split them into 200M pieces. // 2. For each pieces, u
2014-03-21 20:55 题目:给定一个旋转过的升序排序好的数组,不知道旋转了几位.找出其中是否存在某一个值. 解法1:如果数组的元素都不重复,那么我的解法是先找出旋转的偏移量,然后进行带偏移量的二分搜索.两个过程都是对数级的. 代码: // 11.3 Given a sorted array rotated by a few positions, find out if a value exists in the array. // Suppose all elements in th
2014-03-21 20:49 题目:设计一种排序算法,使得anagram排在一起. 解法:自定义一个comparator,使用额外的空间来统计字母个数,然后比较字母个数. 代码: // 11.2 Sort an array of strings such that anagrams stay next to each other. #include <algorithm> #include <iostream> #include <string> #include
2014-03-21 20:35 题目:给定已升序排列的数组A和数组B,如果A有足够的额外空间容纳A和B,请讲B数组合入到A中. 解法:由后往前进行归并. 代码: // 11.1 Given two sorted array A and B, suppose A is large enough to hold them both. Merge B into A. #include <algorithm> #include <cstdio> using namespace std;