📣 独立日限时特惠: VIP通行证立减$68
查看: 1568| 回复: 1
跳转到指定楼层
上一主题 下一主题
收起左侧

buy and sell stocks _ follow up

🔗
xh_pku | 只看该作者 |倒序浏览
全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
其实就是leetcode 309啊。这道题看起来很简单DP可以做,关键是想到准确清晰的转移状态方程。
hold[i] --- 表示在第i天持有股票的最大累计Profit;
unhold[i] --             ... 不持有...;
最后unhold[n - 1]即为结果(因为最后一天必然已经将股票卖出了)

transition equation:

hold[i] = Max{hold[i - 1], unhold[i - 2] - prices[i]};
unhold[i] = Max{unhold[i - 1], hold[i - 1
  1.             int N = prices.length;
  2.             if (N == 0)
  3.                     return 0;
  4.             int hold, unhold = 0;
  5.             int last2_hold = -prices[0], last2_unhold = 0;
  6.             if (N == 1)
  7.                     return last2_unhold;
  8.             int last1_hold = - Math.min(prices[0], prices[1]), last1_unhold = Math.max(prices[1] - prices[0], 0);
  9.             if (N == 2)
  10.                     return last1_unhold;
  11.             for (int i = 2; i < N; ++i) {
  12.                     hold = Math.max(last1_hold, last2_unhold - prices[i]);
  13.                     unhold = Math.max(last1_unhold, last1_hold + prices[i]);
  14.                     //update
  15.                     last2_hold = last1_hold;
  16.                     last2_unhold = last1_unhold;
  17.                     last1_hold = hold;
  18.                     last1_unhold = unhold;
  19.             }
  20.             return unhold;
复制代码
] + prices[i]};

代码如下:






上一篇:有计划一月份必杀Offer的请进
下一篇:买卖股票最佳时机--- IV
🔗
rengokantai 2016-12-25 11:47:42 | 只看该作者
全局:
代码贴乱了.  论坛的 <i>  tag 斜体字问题依然没有解决......
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表