今天几乎花了一上午的时间来看《起床后的黄金一小时》,跟着做了计划,觉得进度确实是清晰了许多,每天早上把长期目标细化成一个个每日小目标,就没有那么容易陷在机械式地忙碌里,而看不到长期目标实现的进度,觉得从明天开始早上提前起来做计划,目前准备使用手帐+思维导图的形式,实际上因为周末时间相对充分,已经把一些长期目标的框架搭好了,剩下的工作日可以在有限的时间里慢慢填起来。
今日进度:
1.学习在早上制定每日计划,目标和实现方法清晰了许多,不再因为想做的事情太多,杂事太多而越来越焦虑,做手帐也有利于发现每天的时间都花到哪里去了,其实每日进度也相当于另一种形式的每日计划,只是没有那么体系化而已
2.坚持刷题,完成项目课程的一个小节,配置Chrome插件,虽然要等谷歌账号激活,但是现在所有配置和初始化都结束了,终于可以开始各个模块的开发了
3.坚持户外锻炼
4.坚持记录
5.准备恢复早睡的习惯,为了早起来做计划
6.发现在地铁里看题目和题解效率很高,可以把刷题时间放在地铁上
学习笔记:
1.早起的一小时,前30分钟做好一天的计划,后30分钟关注重要但不紧急的事情
2.安装Chrome插件,FE助手,便于Jason格式化
3.安装Chrome插件,RestLet Client,模拟http请求,便于调试程序
4.309最佳买卖股票时机含冷冻期
给定一个整数数组prices,其中第 prices[i] 表示第 i 天的股票价格 。
设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票):
卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。
注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。
示例1:
输入: prices = [1,2,3,0,2]
输出: 3
解释: 对应的交易状态为: [买入, 卖出, 冷冻期, 买入, 卖出]
解题思路:当前状态有三种情况,f[i][0]表示当前持有股票,f[i][1]表示当前没有股票且处于冷冻期,f[i][2]表示当前没有股票也不处于冷冻期。状态转移方程如下:f[i][0]=max(f[i-1][0],f[i-1][2]-prices[i])当前持有股票的最大收益为前一天持有股票或前一天没有股票且不处于冷冻期今天买入股票的最大值;f[i][1]=f[i-1][0]+prices[i],当前没有股票且处于冷冻期的收益为前一天持有股票,今天卖出的金额;f[i][2]=max(f[i-1][2],f[i-1][1]),当前没有股票且不处于冷冻期的收益为前一天没有股票且不处于冷冻期与前一天处于冷冻期的最大值。由于最后一天持有股票没有意义,股票买卖的最大收益为f[n-1][1]与f[n-1][2]中的最大值。
class Solution {
public int maxProfit(int[] prices) {
if(prices.length == 0){
return 0;
}
int n = prices.length;
int f[][] = new int[n][3];
//f[i][0]表示持有股票的最大收益
//f[i][1]表示不持有股票且在冷冻期内的最大收益
//f[i][2]表示不持有股票且不在冷冻期内的最大收益
f[0][0] = -prices[0];
f[0][1] = 0;
f[0][2] = 0;
for(int i=1; i<n; i++){
f[i][0] = Math.max(f[i-1][0], f[i-1][2]-prices[i]);
f[i][1] = f[i-1][0] + prices[i];
f[i][2] = Math.max(f[i-1][1], f[i-1][2]);
}
return Math.max(f[n-1][1], f[n-1][2]);
}
}
今天就这样吧,希望可以持续学习提高效率和缓解疲劳的方法,明天继续加油!