动态规划day08
2022/6/25 23:32:23
本文主要是介绍动态规划day08,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
714. 买卖股票的最佳时机含手续费
class Solution { public int maxProfit(int[] prices, int fee) { int len = prices.length; int[][] dp = new int[len][2]; //两种状态:持有和不持有 为方便解题统一卖出时候计手续费 dp[0][0] = -prices[0]; dp[0][1] = 0; for (int i = 1; i < len; i++) { dp[i][0] = Math.max(dp[i - 1][0], dp[i - 1][1] - prices[i]); dp[i][1] = Math.max(dp[i - 1][1], dp[i - 1][0] + prices[i] - fee); } //最后是亏损的就不买 return dp[len - 1][1]; } }
300. 最长递增子序列
class Solution { public int lengthOfLIS(int[] nums) { if (nums.length <= 1) return 1; int len = nums.length, res = 0; int[] dp = new int[len]; Arrays.fill(dp, 1); for (int i = 1; i < len; i++) { for (int j = 0; j < i; j++) { if (nums[i] > nums[j]) { //以nums[i]w为结尾的最大递增子序列 dp[i] = Math.max(dp[j] + 1, dp[i]); } } //保存最大递增子序列 res = Math.max(dp[i], res); } return res; } }
674. 最长连续递增序列
// //动态规划 // class Solution { // public int findLengthOfLCIS(int[] nums) { // if (nums.length == 1) return 1; // int len = nums.length, res = 0; // int[] dp = new int[len]; // Arrays.fill(dp, 1); // for (int i = 1; i < len; i++) { // if (nums[i] > nums[i - 1]) { // dp[i] = dp[i - 1] + 1; // } // res = Math.max(res, dp[i]); // } // return res; // } // } //贪心 class Solution { public int findLengthOfLCIS(int[] nums) { int len = nums.length, res = 1, count = 1; for (int i = 1; i < len; i++) { if (nums[i] > nums[i - 1]) { count++; } else { count = 1; } if (count > res) res = count; } return res; } }
参考:programmercarl.com
这篇关于动态规划day08的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-15鸿蒙生态设备数量超8亿台
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?