前言
###我做这类文章一个重要的目的还是给正在学习的大家提供方向(例如想要掌握基础用法,该刷哪些题?建议灵神的题单和代码随想录)和记录自己的学习过程,我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非常非常高滴!!!
习题
1.最大子数组和
题目链接:53. 最大子数组和 - 力扣(LeetCode)
题面:
附上灵神代码:
java">class Solution {public int maxSubArray(int[] nums) {int[] f = new int[nums.length];f[0] = nums[0];int ans = f[0];for (int i = 1; i < nums.length; i++) {f[i] = Math.max(f[i - 1], 0) + nums[i];ans = Math.max(ans, f[i]);}return ans;}
}
2.找到最大开销的子字符串
题目链接:2606. 找到最大开销的子字符串 - 力扣(LeetCode)
题面:
代码
java">class Solution {Map<Character,Integer> map = new HashMap<>();public int maximumCostSubstring(String s, String chars, int[] vals) {char[] arr = chars.toCharArray();for(int i = 0;i<arr.length;i++){map.put(arr[i],vals[i]);}char[] brr = s.toCharArray();int n = brr.length;int[] f = new int[n+1];f[0] = 0;int ans = 0;for(int i = 1;i<=n;i++){f[i] = Math.max(f[i-1],0)+find(brr[i-1]);ans=Math.max(f[i],ans);// System.out.println(f[i]);}return ans;}public int find(char c){int flag = map.getOrDefault(c,-10000);if(flag!=-10000){return flag;}else{return c-'a'+1;}}
}
后言
上面是动态规划相关的习题,共勉