动态规划
软件园里卖煎饼
以文载意,以理铸心
展开
-
每日一题:741. 摘樱桃
看看官方题解吧原创 2022-07-10 21:07:24 · 314 阅读 · 0 评论 -
每日一题:剑指 Offer 42. 连续子数组的最大和
解题思路动态规划思想代码class Solution { public int maxSubArray(int[] nums) { int n = nums.length; int[] dp = new int[n]; dp[0]=nums[0]; int max = nums[0]; for (int i=1;i<n;i++){ dp[i]=Math.max(nums[i],dp[i原创 2021-07-19 09:49:00 · 59 阅读 · 0 评论 -
leetcode.64. 最小路径和
解题思路动态规划DP,可以看官方题解动态图代码class Solution { public int minPathSum(int[][] grid) { int n = grid.length,m = grid[0].length; for(int i=1;i<m;i++){ grid[0][i]=grid[0][i]+grid[0][i-1]; } for(int i=1;i<n;i++){原创 2021-07-01 15:10:13 · 69 阅读 · 0 评论 -
每日一题:740. 删除并获得点数
解题思路转换成打家劫舍问题来做,因为题目的本意无非就是取或不取,如果取了3就不能取2,41.统计每个数的综合,用num存着,num大小为100012.进行dp代码class Solution { public int deleteAndEarn(int[] nums) { if (nums.length==0) return 0; if (nums.length==1) return nums[0]; int num[] = new int[原创 2021-05-05 20:56:25 · 119 阅读 · 1 评论 -
每日一题:213. 打家劫舍 II
解题思路无非就是在打家劫舍1的基础上如果偷了第一间房,就不能偷第二间如果偷了第二间,就不能偷第一间既然如此划出两个区间就可以了代码class Solution { public int rob(int[] nums) { if (nums.length==1) return nums[0]; int[] dp1 = new int[nums.length-1]; int[] dp2 = new int[nums.length-1];原创 2021-04-15 17:24:20 · 78 阅读 · 1 评论 -
LeetCode:198. 打家劫舍
解题思路使用了三种思路1.dfs递归2.带备忘录的dfs递归3.dp数组动态规划代码class Solution { public int rob(int[] nums) { return dfs(nums,0); } public int dfs(int[] nums,int index){ if (index>=nums.length){ return 0; } int mo原创 2021-04-14 19:15:19 · 98 阅读 · 1 评论 -
每日一题:1143. 最长公共子序列
解题思路dp解决最长公共子序问题代码class Solution { public int longestCommonSubsequence(String text1, String text2) { int m = text1.length(), n = text2.length(); int[][] dp = new int[m + 1][n + 1]; for (int i = 1; i <= m; i++) {原创 2021-04-12 21:50:41 · 84 阅读 · 0 评论 -
动态规划解题思路以及和递归之间的关系
一.斐波那契数列解题思路第一种:暴力解法直接使用原函数递归会有重复计算的问题第二种:在原有的第一种解法的基础上进行优化,即代码class Solution { public int fib(int n) { if(n==0 || n==1){ return n; } return fib(n-1)+fib(n-2); }}...原创 2021-04-11 16:27:14 · 108 阅读 · 0 评论 -
剑指Offer.JZ30.连续子数组的最大和
解题思路动态规划维护一个ans数组代表下标所在数字能得到的最大和代码import java.util.Arrays;public class Solution { public int FindGreatestSumOfSubArray(int[] array) { int n = array.length; int[] ans = new int[n]; Arrays.fill(ans,-99999999);// for原创 2021-03-09 17:49:02 · 117 阅读 · 0 评论