08 2020 档案
摘要:一. 问题 给定一个含有 n 个元素的序列 A,将序列中的元素逆转。 二. 思路 在前两篇文章中,我用到两种手法来逆转数组,第一种是元素交换第二种是用一个额外的栈。现在我们考虑一种新的算法:用一个队列来读入序列中的元素,再将队列中元素弹出,从后向前重新放回序列中,这样就完成了整个序列的逆转。此算法的
阅读全文
摘要:一. 问题 给定一个含有 n 个元素的序列 A,将序列中的元素逆转。 二. 思路 在前一篇文章中,我选择用用临时变量,来进行前后元素交换。这种算法的时间复杂度是 O( n ),空间复杂度是 O( 1 )(因为用到了有限个临时变量)。现在我们考虑一种新的算法:用一个栈来读入序列中的元素,再将栈中元素弹
阅读全文
摘要:一. 问题 给定含 n 个整数的数组,找出连续的有序最长子数组。算法的运行时间是多少? 二. 思路 假设有一个序列, data = (1, 2, 3, 4, 2, 1, 3, 0),显然,从元素 1 到元素 4 是升序排列的,并且有 4 个元素。我们为了简单起见,仅查找升序排列的子序列。 要获得子序
阅读全文
摘要:一. 问题 给定一个由 0 到 9 的 n 个数字组成的字符串 S,描述一个将 S 转换成它表示的整数的有效算法。算法的运行时间是多少? 二. 思路 按照题目,我们假设给定字符串为 S = “12345”,可以看出,字符串 S 中含有 5 个字符,那么我们怎么将它们转换成相应整数?先将问题进行简化,
阅读全文
摘要:一. 问题 给定一个数组 A,描述一个将 A 逆转的高效算法。例如,如果 A = (1, 2, 3, 4, 5),逆转以后是 A = (5, 4, 3, 2, 1)。除了 A 本身使用的空间外,只能使用 O( 1 )的额外内存。算法的运行时间是多少? 二. 思路 规定只能使用固定大小的额外内存,说明
阅读全文
摘要:一. 问题 给定一个整数 c 和一个下标从 1 到 n 的数组 A,A 中的元素是范围 1 到 5n(可能有重复)的 n 个整数。描述一个有效算法来确定 A 中是否存在两个整数 A[ i ] 和 A[ j ] ,其和为 c,即 c = A[ i ] + A[ j ], 1 ≤ i < j ≤ n。算
阅读全文
摘要:一. 问题 给定一组序列,找出其中的最大元素。 二. 实例分析 1.循环手法 (1)思路 给定一组序列, data = (1, 3, 4, 9, 12, 3)。我们一眼看出,最大值是 12 ,但是计算机并不能一眼看出。我们用一个变量来保存最大值,并将序列中的每个元素与之比较,如果大于这个最大值,就将
阅读全文
摘要:一. 问题 给定一个数 n ,用递归的手法求出从 1 到 n 的累加和。 1. 实例分析 假设传入参数 n = 5。 (方法一)高斯公式 1 int gauss_sum(int n) { 2 int sum = (1 + n) * n / 2; 3 4 return sum; 5 } 利用公式,一次
阅读全文
摘要:一. 问题 给定一组数据,将元素用递归的手法打印出来。 二. 实例分析 1. 循环手法 给定一组数据, data = (1, 2, 3, 4, 5, 6)。现在要打印元素,常规手法就是用循环,代码如下: 1 void print_element(const vector<int>& data) {
阅读全文
摘要:一. 最大子序列和-联机算法 在前两篇博文中,我们了解了两种较差算法,和一种分治算法。下面我们讲解一个更好的方法:联机算法。这种算法的时间复杂度是 O(n)。这个方法也是解决这个问题的最好算法,因为无论如何,读取数据也要 n 次。 1. 实例分析 给定一组数据,data = (1, 4, -3, 7
阅读全文
摘要:在上一篇博文中,我们了解了最大连续子序列和的概念,也实现了两种低效算法,但是我们发现还有更加高效的算法。(好吧,其实并不是我们发现的,几乎每一本教科书里,讲到最大连续子序列和问题时,都会依次分析这4种算法,从而展现对同一问题使用不同方法,产生的效果也会不同)。 一. 最大连续子序列和-分治算法 分治
阅读全文
摘要:一. 定义 1.序列: 给定一组数据,这组数据就叫做序列。这里的数据有可能是一年的交易额,或者有其余的含义。所以数据并不是经过排序的。比如 data = (1, 4, -3, 7, -6, 10). 2.连续子序列: 在序列中,任取连续区间的一组数据,叫做连续子序列。 3.最大连续子序列和: 把每个
阅读全文
摘要:一. 定义 1.移动平均值是什么? (1)移动平均值,是一种统计指标,用于观测一组随时间变化的量。 (2)M-移动平均值,是最后 M 个数的移动平均值。一定要注意,这边算出的平均值是一组数,而不是一个数。 2. 移动平均值怎么算? 首先我们给出一组数据,data = ( 1, 2, 3, 4, 5,
阅读全文

浙公网安备 33010602011771号