- 博客(4)
- 收藏
- 关注
原创 数组
1、(453)最小操作次数使数组元素相等 给定一个长度为 n 的非空整数数组,每次操作将会使 n - 1 个元素增加 1。找出让数组所有元素相等的最小操作次数。 在只考虑元素相对大小的情况下,每次将除该元素的其他元素加1 可等价为将该元素减 1。则只需将所有元素减至最小即可。 public int minMoves(int[] nums) { int max=Integer.MAX_VALUE; int res=0; for(int x...
2021-06-17 09:11:29
234
原创 线性DP
一、什么是线性DP? 在线性结构上进行状态转移,目标函数为特定变量的线性函数,目的是求目标函数的最大值或最小值。 二、一些例题 1、(1143)最长公共子序列 求两个字符串 S1、S2 的最长公共子序列长度。 dp[i][j]代表 S1 前 i 位和 S2 前 j 位的最长公共子序列长度。 int[][] dp = new int[l1 + 1][l2 + 1]; for (int i = 1; i <= l1; i++) { for (int j = 1; j <= ..
2021-05-31 15:16:05
1168
原创 递推DP
一、什么是递推DP? 这波啊,这波是这波啊,这波是这波啊,这波是这波啊,这波啊,这波是这波啊这波啊,这波是这波啊,这波是······,这波是递推DP。 二、一些例题 1、(70)爬楼梯 需要 n 阶可到达楼顶,每次可爬 1 或 2 个台阶。求爬到楼顶的方法数。 dp[n] = dp[n-1] + dp[n-2]; ...
2021-05-18 08:46:21
270
原创 背包DP
一、什么是背包问题 有n件物品,每件物品的体积为 ,价值为 ,求在有限的背包容量 下所能携带的最大价值。背包问题可分为 0 - 1 背包、完全背包与多重背包。 二、0 - 1 背包 每件物品最多选择一次。 dp[0] = 0; //初始化 for (int i = 1; i < n; i++) { for (int j = W; j >= w[i]; j--) { //逆序 dp[j] = Math.max(dp[j], v[i] +.
2021-05-13 15:35:09
182
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅