Chinaunix首页 | 论坛 | 博客
  • 博客访问: 41150
  • 博文数量: 37
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 372
  • 用 户 组: 普通用户
  • 注册时间: 2013-10-12 23:27
文章分类

全部博文(37)

文章存档

2014年(5)

2013年(32)

我的朋友

分类: C/C++

2013-11-29 11:16:44

先找到第一个波谷,如果比已知波谷还小则更新最小波谷。再找接邻的波峰,如果波峰值减最小波谷值大于已知最大差值则更新。依次处理剩下的波峰及波谷即可。



点击(此处)折叠或打开

  1. class Solution {
  2. public:
  3.     int maxProfit(vector<int> &prices) {
  4.         if(prices.size()<2) return 0;
  5.         int min=0x7fffffff;
  6.         int re=0;
  7.         int j=0;
  8.         while(j<prices.size()-1)
  9.         {
  10.             while(j<prices.size()-1&&prices[j]>=prices[j+1]) j++;
  11.             if(prices[j]<min) min=prices[j];
  12.             while(j<prices.size()-1&&prices[j]<prices[j+1]) j++;
  13.             if(prices[j]-min>re) re=prices[j]-min;
  14.         }
  15.         return re;
  16.     }
  17. };

阅读(121) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~