为实现O(1)的时间复杂度完成取队列中最大元素,使用maxStackItemIndex记录队列(使用两个栈实现)中最大元素下标,使用数组link2NextMaxItem[]记录数组中次大值的下标,这也就是使用两个栈(先进后出)模拟队列二不是直接使用队列(先进先出)的原因:先进后出可以保证当执行p... Read More
解法一:直接求解下标i~j的子数组和最大值;复杂度O(N^2);代码如下: 1 #include 2 using namespace std; 3 const int INF=1000000; 4 5 int maxSum(int arr[],int n); 6 7 int main() 8 {... Read More
当二叉树在某些情况下退化为类单链表时,它的查找、插入、删除运算复杂度将不再是O(logN)),解决问题的方法就是尽量维持树的平衡。节点的平衡因子定义为左子树高度减去右子树高度,AVL树中每个节点平衡因子为0,1,-1;具体代码: 1 #include 2 #include 3 using na... Read More
问题:给定整数N,求最小整数M,使得N*M的十进制表示中只含有1和0; 当M很大时,机器可能不能表示M,对问题转化:求以最小整数X,使得X的十进制表示中只含1和0,并且被N整除; 此问题必定有解;可参考:http://blog.csdn.net/spaceyqy/article/deta... Read More
关于最长公共子序列:LCS是两个序列相似性的一种度量方法;若序列s1:2,5,7,9,3,1,2 s2:3,5,3,2,8则LCS为:5,3,2思路可参考:http://www.csie.ntnu.edu.tw/~u91029/LongestCommonSubsequence.html具体代码... Read More