买卖股票的最佳时机
自己想出来的解法:
思路:
对数组进行遍历,对每个元素,计算其与每一天历史价格的差值,通过打擂台方式维护最大利润。
代码:
性能:
因为未通过用来限制性能的用例(TLE),无法看到具体表现。
分析:
该算法时间复杂度为O(),所以在数据量大时,容易超时。
可能的最优解法(来自leetcode官方题解):
思路:
只遍历数组一次,在遍历时维护一个历史最低价格,同时计算如果在当天卖出得到的利润,也是通过打擂台方式维护最大利润。
代码:
性能:
分析:
在时间和空间方面同时拥有良好的性能。
买卖股票的最佳时机 II
自己想出来的解法(秒杀):
思路:
根据题目描述与示例,结合对实际情况的分析,可以得出最大利润与所有一天买入下一天卖出后有利润的区间的利润之和相等。所以可以直接把所有相邻两天买入卖出有利润的区间的利润相加,即可得到最大利润。这是一种贪心思想。
代码:
性能:
分析:
在时间和空间方面同时拥有良好的性能。