class Solution {
public:
int maxProfit(vector<int>& prices) {
int len=prices.size();
if(len<)
return ; vector<int> max_num;//用来保存从第n天到第1天的,遍历到的最大值
vector<int> min_num;//用来保存从第1天到第n天的,遍历到的最小值
int min_cur=INT_MAX,max_cur=INT_MIN;
for(int i=;i<len;i++)
{
int j=len--i;
if(prices[i]<min_cur)
min_cur=prices[i];
min_num.push_back(min_cur); if(prices[j]>max_cur)
max_cur=prices[j];
max_num.push_back(max_cur); } int lirun=;
for(int i=;i<len-;i++)//如果第i天后的最大值-第i天前的最小值>当前利润,赋值
{
if((max_num[len--i]-min_num[i])>lirun)
lirun=max_num[len--i]-min_num[i];
} return lirun;
}
};

分析:

就这我还想了半个小时呢,时间复杂度倒是不高,O(N)。但是空间复杂度高,也是O(N)。题解给了一种算法思路,能把空间复杂度降为O(1)。

我昨天想到这个算法的一点头绪,但是没注意保存最大值,导致没再继续往下想,尴尬。

leecode第一百二十一题(买卖股票的最佳时机)的更多相关文章

  1. 【leetcode 简单】第三十一题 买卖股票的最佳时机

    给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润. 注意你不能在买入股票前卖出股票. 示例 ...

  2. 一起talk C栗子吧(第一百二十一回:C语言实例--线程知识体系图)

    各位看官们.大家好,上一回中咱们说的线程属性的样例.这一回咱们说的样例是:线程知识体系图.闲话休提.言归正转. 让我们一起talk C栗子吧! 我们在前面的章回中介绍了与线程相关的知识,在今天的章回中 ...

  3. leecode第一百二十二题(买卖股票的最佳时机II)

    class Solution { public: int maxProfit(vector<int>& prices) { int len=prices.size(); ) ; , ...

  4. leecode第一百二十四题(二叉树中的最大路径和)

    /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode ...

  5. 第一百二十一节,JavaScript事件绑定及深入

    JavaScript事件绑定及深入 学习要点: 1.传统事件绑定的问题 2.W3C事件处理函数 3.IE事件处理函数 4.事件对象的其他补充 事件绑定分为两种:一种是传统事件绑定(内联模型,脚本模型) ...

  6. 【leetcode 简单】第三十二题 买卖股票的最佳时机Ⅱ

    给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 设计一个算法来计算你所能获取的最大利润.你可以尽可能地完成更多的交易(多次买卖一支股票). 注意:你不能同时参与多笔交易(你必须在再次 ...

  7. leecode第二百三十一题(2的幂)

    class Solution { public: bool isPowerOfTwo(int n) { bool is_flag=false; ) { ==)//如果为1,看是不是第一个1 { if( ...

  8. leecode第一百六十题(相交链表)

    /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode ...

  9. leecode第一百零四题(二叉树的最大深度)

    /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode ...

随机推荐

  1. asyncio queue

    from asyncio import Queue,sleep import asyncio from threading import Thread import time qu=Queue() # ...

  2. select2 AJAX获取数据

    页面效果: index.html <!DOCTYPE html> <html> <head> <meta charset="utf-8"& ...

  3. django模板-通过a标签生成链接并跳转

    views.py from django.shortcuts import render from django.http import HttpResponse def index(request) ...

  4. 标准库 string

    1.func Fields(s string) []string,这个函数的作用是按照1:n个空格来分割字符串最后返回的是[]string的切片 package main import ( " ...

  5. go开发工具及安装使用(Liteide)Liteide-centos6.8 安装

    开发工具介绍 LiteIDE https://github.com/visualfc/liteide/blob/master/liteidex/deploy/welcome/zh_CN/readme. ...

  6. UML状态机图【图3】--☆

    UML状态机图 基本概述    状态机图描述的是围绕某一事物状态变化的图.它也是三大流程分析利器之一.它和活动图的区别在于,活动图是描述事物发生的流程,是多个角色参与的,而状态机描述的是事物的状态变化 ...

  7. 列表与if语句的结合

    # 1.判断一个数是否是水仙花数, 水仙花数是一个三位数, 三位数的每一位的三次方的和还等于这个数. \ # 那这个数就是一个水仙花数, 例如: 153 = 1**3 + 5**3 + 3**3 # ...

  8. POJ 1679 The Unique MST 【判断最小生成树是否唯一】

    Description Given a connected undirected graph, tell if its minimum spanning tree is unique.  Defini ...

  9. shell 编程中的 知识点 - 突然一下子就明白很多东西了

    按自己的意愿生活, 而且是::: 要敢于按自己的意志去活! 那是一种胆量和勇气!! shell中的结构, 只有选择(实际上if条件也是一种选择结构)和循环, 都是用关键字来替代 大括号的. 如: if ...

  10. Smartmontools硬盘检测工具

    安装: 下载 命令使用: 查看驱动器信息: $ smartctl -i D: smartctl 6.6 2017-11-05 r4594 [x86_64-w64-mingw32-w10-b17134] ...