摘要:
这题用暴力法会超时。故直接考虑只遍历一次完成任务。使得时间复杂度为O(n)。 在遍历的过程中,维护历史最小价格和当前最大利润两个变量。(历史最小价格是目前为止可见的最小价格,并非全局最小) 每访问一个价格元素,先后更新最大利润和历史最小价格两个变量。(注意先后顺序) 提供代码如下 1 class S 阅读全文
摘要:
常规的暴力解法,所有排列组合情况试一遍,时间复杂度为O(n^2) 以leetcode的测试集来看,效率最高的是贪心法。从开头到结尾依次加,如果sum<0了,那么求和器sum归零。时间复杂度为O(n)。 代码如下 1 //贪心法 2 class Solution { 3 public: 4 int m 阅读全文
摘要:
这个作为第一道题。暴力解法还是很简单的。 快速的解法是建立字典,用O(n)的空间代价将时间代价从O(n^2)下降到O(n)。 我是用c++实现。这里需要注意,在对顺序性没有要求,并且需要更好的查找性能的时候,推荐使用unordered_map而非map。 实现代码如下 class Solution 阅读全文