摘要: 一. 问题 外汇交易可以通过兑换不同国家的货币赚取汇率差。比如1美元兑换100日元时购入1000美元,然后等汇率变动到1美元兑换108美元时再卖出,这样就可以赚取(108 - 100)× 1000 = 8000日元。 现在请将某货币在 t 时刻的价格 Rt (t = 0, 1 , 2, ..., n 阅读全文
posted @ 2020-10-22 14:19 Hello_Nolan 阅读(989) 评论(0) 推荐(0) 编辑
摘要: 一. 问题 给定一个含有 n 个元素的序列 A,将序列中的元素逆转。 二. 思路 在前两篇文章中,我用到两种手法来逆转数组,第一种是元素交换第二种是用一个额外的栈。现在我们考虑一种新的算法:用一个队列来读入序列中的元素,再将队列中元素弹出,从后向前重新放回序列中,这样就完成了整个序列的逆转。此算法的 阅读全文
posted @ 2020-08-30 18:24 Hello_Nolan 阅读(121) 评论(0) 推荐(0) 编辑
摘要: 一. 问题 给定一个含有 n 个元素的序列 A,将序列中的元素逆转。 二. 思路 在前一篇文章中,我选择用用临时变量,来进行前后元素交换。这种算法的时间复杂度是 O( n ),空间复杂度是 O( 1 )(因为用到了有限个临时变量)。现在我们考虑一种新的算法:用一个栈来读入序列中的元素,再将栈中元素弹 阅读全文
posted @ 2020-08-30 18:07 Hello_Nolan 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 一. 问题 给定含 n 个整数的数组,找出连续的有序最长子数组。算法的运行时间是多少? 二. 思路 假设有一个序列, data = (1, 2, 3, 4, 2, 1, 3, 0),显然,从元素 1 到元素 4 是升序排列的,并且有 4 个元素。我们为了简单起见,仅查找升序排列的子序列。 要获得子序 阅读全文
posted @ 2020-08-26 03:31 Hello_Nolan 阅读(533) 评论(0) 推荐(0) 编辑
摘要: 一. 问题 给定一个由 0 到 9 的 n 个数字组成的字符串 S,描述一个将 S 转换成它表示的整数的有效算法。算法的运行时间是多少? 二. 思路 按照题目,我们假设给定字符串为 S = “12345”,可以看出,字符串 S 中含有 5 个字符,那么我们怎么将它们转换成相应整数?先将问题进行简化, 阅读全文
posted @ 2020-08-25 22:39 Hello_Nolan 阅读(536) 评论(0) 推荐(0) 编辑
摘要: 一. 问题 给定一个数组 A,描述一个将 A 逆转的高效算法。例如,如果 A = (1, 2, 3, 4, 5),逆转以后是 A = (5, 4, 3, 2, 1)。除了 A 本身使用的空间外,只能使用 O( 1 )的额外内存。算法的运行时间是多少? 二. 思路 规定只能使用固定大小的额外内存,说明 阅读全文
posted @ 2020-08-24 22:05 Hello_Nolan 阅读(233) 评论(0) 推荐(0) 编辑
摘要: 一. 问题 给定一个整数 c 和一个下标从 1 到 n 的数组 A,A 中的元素是范围 1 到 5n(可能有重复)的 n 个整数。描述一个有效算法来确定 A 中是否存在两个整数 A[ i ] 和 A[ j ] ,其和为 c,即 c = A[ i ] + A[ j ], 1 ≤ i < j ≤ n。算 阅读全文
posted @ 2020-08-24 21:24 Hello_Nolan 阅读(206) 评论(0) 推荐(0) 编辑
摘要: 一. 问题 给定一组序列,找出其中的最大元素。 二. 实例分析 1.循环手法 (1)思路 给定一组序列, data = (1, 3, 4, 9, 12, 3)。我们一眼看出,最大值是 12 ,但是计算机并不能一眼看出。我们用一个变量来保存最大值,并将序列中的每个元素与之比较,如果大于这个最大值,就将 阅读全文
posted @ 2020-08-23 06:10 Hello_Nolan 阅读(897) 评论(0) 推荐(0) 编辑
摘要: 一. 问题 给定一个数 n ,用递归的手法求出从 1 到 n 的累加和。 1. 实例分析 假设传入参数 n = 5。 (方法一)高斯公式 1 int gauss_sum(int n) { 2 int sum = (1 + n) * n / 2; 3 4 return sum; 5 } 利用公式,一次 阅读全文
posted @ 2020-08-22 22:16 Hello_Nolan 阅读(2288) 评论(0) 推荐(0) 编辑
摘要: 一. 问题 给定一组数据,将元素用递归的手法打印出来。 二. 实例分析 1. 循环手法 给定一组数据, data = (1, 2, 3, 4, 5, 6)。现在要打印元素,常规手法就是用循环,代码如下: 1 void print_element(const vector<int>& data) { 阅读全文
posted @ 2020-08-22 10:03 Hello_Nolan 阅读(445) 评论(0) 推荐(0) 编辑