给出一个整数数组,堆化操作就是把它变成一个最小堆数组。
对于堆数组A,A[0]是堆的根,并对于每个A[i],A [i * 2 + 1]是A[i]的左儿子并且A[i * 2 + 2]是A[i]的右儿子。
样例
给出 [3,2,1,4,5],返回[1,2,3,4,5] 或者任何一个合法的堆数组
挑战
O(n)的时间复杂度完成堆化
说明
什么是堆...
分类:
其他好文 时间:
2015-05-18 20:51:16
阅读次数:
288
给定一个整数数组,找到一个和最接近于零的子数组。返回第一个和最有一个指数。你的代码应该返回满足要求的子数组的起始位置和结束位置
样例
给出[-3, 1, 1, -3, 5],返回[0, 2],[1, 3], [1,
1], [2, 2] 或者[0, 4]
挑战
O(nlogn)的时间复杂度
分析:首先O(n^2)的算法很好想,直接枚举起点就行,看到...
分类:
编程语言 时间:
2015-05-18 12:52:05
阅读次数:
490
给定一个包含红,白,蓝且长度为n的数组,将数组元素进行分类使相同颜色的元素相邻,并按照红、白、蓝的顺序进行排序。
我们可以使用整数0,1和2分别代表红,白,蓝。
样例
注意
不能使用代码库中的排序函数来解决这个问题
说明
一个相当直接的解决方案是使用计数排序扫描2遍的算法。
首先,迭代数组计算0,1,2出现的次数,然后依次用0,1,2出现的次数去覆盖数组。
...
分类:
其他好文 时间:
2015-05-18 10:52:52
阅读次数:
147
给定一个有n个对象(包括k种不同的颜色,并按照1到k进行编号)的数组,将对象进行分类使相同颜色的对象相邻,并按照1,2,...k的顺序进行排序。...
分类:
编程语言 时间:
2015-05-18 08:59:55
阅读次数:
193
给定一个m×n矩阵,如果一个元素是0,则将其所在行和列全部元素变成0。
需要在原地完成。
样例
给出一个矩阵[[1,2],[0,3]],返回[[0,2],[0,0]]
挑战
你是否使用了额外的空间?
一个直接的解决方案是使用O(MN)的额外空间,但这并不是一个好的方案。
一个简单的改进方案是使用O(M + N)的额外空间,但这仍然不是最好的解决方案。
你...
分类:
其他好文 时间:
2015-05-17 21:56:37
阅读次数:
156
给出 n,问由 1...n 为节点组成的不同的二叉查找树有多少种?
样例
给出n = 3,有5种不同形态的二叉查找树:
1 3 3 2 1
\ / / / \ 3 2 1 1 3 2
/ / \ ...
分类:
其他好文 时间:
2015-05-17 20:20:21
阅读次数:
344
给出两个32位的整数N和M,以及两个二进制位的位置i和j。写一个方法来使得N中的第i到j位等于M(M会是N中从第i为开始到第j位的子串)
样例
给出N = (10000000000)2,M = (10101)2, i = 2, j = 6
返回 N = (10001010100)2
挑战
最少的操作次数是多少?
分析:这道题粗粗一看蛮简单,但实际上坑很多,而...
分类:
其他好文 时间:
2015-05-17 18:43:06
阅读次数:
234
给出一个字符串 A, 表示一个 n 位正整数, 删除其中 k 位数字, 使得剩余的数字仍然按照原来的顺序排列产生一个新的正整数, 使得这个新的正整数尽可能的小.
N k N
样例
给出一个字符串代表的正整数 A 和一个整数 k, 其中A
= 178542, k = 4
返回一个字符串 "12"
分析:每次删除一个字母,从高位到低位,发现s[i]>s[i+1]时,即...
分类:
其他好文 时间:
2015-05-17 16:50:50
阅读次数:
501
有一些原木,现在想把这些木头切割成一些长度相同的小段木头,需要得到的小段的数目至少为 k。当然,我们希望得到的小段越长越好,你需要计算能够得到的小段木头的最大长度。
样例
有3根木头[232, 124,
456], k=7, 最大长度为114.
注意
木头长度的单位是厘米。原木的长度都是正整数,我们要求切割得到的小段木头的长度也要求是整数。无法切出要求至少 k ...
分类:
其他好文 时间:
2015-05-17 15:18:36
阅读次数:
120
There is an integer matrix which has the following features:The numbers in adjacent positions are different.The matrix has n rows and m columns.For al...
分类:
其他好文 时间:
2015-05-17 14:58:30
阅读次数:
115