ARTS打卡第7周

A: Best Time to Buy and Sell Stock

题目:Say you have an array for which the ith element is the price of a given stock on day i.

If you were only permitted to complete at most one transaction (i.e., buy one and sell one share of the stock), design an algorithm to find the maximum profit.

Note that you cannot sell a stock before you buy one.

解析:给定一个股票的每日价格表,只进行一次买卖,先买入再卖出,求最大利润

思路:将数组进行循环,记录最小的值,判断当前元素和最小值的关系,如果小于最小值则进行替换,大于最小值,并且得到的利润比之前的大就记录当前的利润,最终得出最大利润

方案:https://leetcode.com/submissions/detail/226681919/

解析:给定一个股票的每日价格表,可以进行多次买卖,先买入再卖出,求最大利润

思路:将数组进行循环,记录当前的位置,满足当前位置小于下一位置时进行买入价的记录,不满足则移动到下一位,再进行处理当前位置大于下一位置时,记录卖出价格,记录每次买卖的利润并统计,多次买卖的结果中必将包含单次买卖最大利润的买入和卖出价,如在数组[7,1,5,3,6,4]的单次买卖的最大利润是6-1,多次买卖5-1+6-3中包含6-1+5-3,最终得到最大利润

方案:https://leetcode.com/submissions/detail/226638229/

解析:给定一个股票的每日价格表,可以进行二次买卖,先买入再卖出,求最大利润

思路:假设我们一开始只有0钱,存在四种需要考虑的情况,我们刚买了第1只股票的余额,我们刚卖了第1只股票的余额,我们刚买了第2只股票的余额,我们刚卖了第2只股票的余额。取最终的卖出第二只股票的余额。

方案:https://leetcode.com/submissions/detail/226681034/

R:http://open.163.com/movie/2010/12/8/U/M6UTT5U0I_M6V2T998U.html 《算法导论》第三课分治法,提供了一些分治算法的实现思路,分治算法时间复杂度的计算思路,比较了分治算法和一般算法的差别,原理是将一个大的问题分解成两个小的问题分别进行处理,每次问题规模减半,最终分解成n个小问题,将对应的小问题的结果进行合并,常见的分治算法有数组的排序,归并排序法,斐波拉契数列和矩阵的乘法等。

T:二叉树的三种遍历方式:

1.先序遍历:按照根节点->左子树->右子树的顺序访问二叉树

先序遍历:(1)访问根节点;(2)采用先序递归遍历左子树;(3)采用先序递归遍历右子树;

2.中序遍历:按照左子树->根节点->右子树的顺序访问

中序遍历:(1)采用中序遍历左子树;(2)访问根节点;(3)采用中序遍历右子树

3.后序遍历:按照左子树->右子树->根节点的顺序访问二叉树

后序遍历:(1)采用后序递归遍历左子树;(2)采用后序递归遍历右子树;(3)访问根节点;

S:程序员练级攻略:系统知识,指明了努力的方向,值得参考学习,一个是操作系统,一个是网络系统,还有一个是数据库系统,以及算法及数据结构,都是自我提升的方向,需要持续学习。

 

 

猜你喜欢

转载自www.cnblogs.com/wujunjie-Blog/p/10816855.html