一个人内耗,说明他活在过去;一个人焦虑,说明他活在未来。只有当一个人平静时,他才活在现在。
日常
1、起床6:05
2、健身1.5h
3、LeetCode刷了1题
- 目标和
- 给一个非负整数数组,判断每个元素取+或者取-相加之和为target的组合个数
- 可以使用暴力解法:回溯+递归,但时间复杂度是指数的,会超出时间限制
- 要使用动态规划,先转换为01背包问题:每个元素要么放入背包要么不放入背包,判断背包容量为j时的最大价值
- 此时可将原问题转换为找出两个数组,一个全为正,一个全为负,使得和为target,且正-负=总和,此时就可以转换为01背包问题,即判断某个元素是否放入,且背包容量应该根据关系推出,而且是判断装满背包的个数
- 定义dp数组并确定下标含义:
dp[i][j]: 前i个元素中满足和为j的组合个数
,一定注意此时不再是背包最大价值,而是满足和为j的组合个数,即装满背包的个数 - 确定递推公式:
dp[i][j] = dp[i-1][j] + dp[i-nums[i]][j-nums[i]]
,即第i个元素不放入时和为j的组合个数 + 第i个元素放入时和为j-nums[i]
的组合个数 - 初始化数组:0个元素放入背包为0的个数是1个!!!要注意可能存在元素为0的情况,故对第一列初始化时,一定判断所有元素为0的情况
- 确认遍历顺序:只依赖左上角元素,故只需要从左向右从上向下遍历即可
- 使用一维数组实现:只需要将递推公式转换为一维数组形式,不再依赖上一行而是在自身基础上更新,然后必须从后向前遍历
4、复盘22:30
不复盘等于白学!!!
学习和感想
1. DevOps
- DevOps是什么
-
DevOps是一系列做法和工具,可以使流程实现自动化,将开发的代码自动化上云,实现持续集成CI和持续交付CD
-
Jenkins是开源CI&CD(持续集成和持续交付)软件领导者
-