392.判断子序列
题目链接:392. 判断子序列 - 力扣(Leetcode)
解题思路:
class Solution {
public boolean isSubsequence(String s, String t) {
/**
* 动态规划
*/
if(s.length() == 0) return true;
if(t.length() == 0) return false;
int[][] dp = new int[s.length()][t.length()];
int rcd = 0;
for(int i = 0; i < s.length(); i++){
if(rcd == 0 && s.charAt(i) == t.charAt(0)) rcd = 1;
dp[i][0] = rcd;
}
rcd = 0;
for(int i = 0; i < t.length(); i++){
if(rcd == 0 && t.charAt(i) == s.charAt(0)) rcd = 1;
dp[0][i] = rcd;
}
for(int i = 1; i < s.length(); i++){
for(int j = 1; j < t.length(); j++){
if(s.charAt(i) == t.charAt(j)) dp[i][j] = dp[i - 1][j - 1] + 1;
else dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1]);
}
}
return dp[s.length() - 1][t.length() - 1] == s.length();
}
}
115.不同的子序列
题目链接:115. 不同的子序列 - 力扣(Leetcode)
解题思路:
class Solution {
public int numDistinct(String s, String t) {
/**
* 1. dp[i][j] 下标0-i的字符串s的子序列中出现下标0-j的字符串t的个数
* 2. if(s.charAt(i) == t.charAt(j)) dp[i][j] = dp[i - 1][j - 1] + dp[i - 1][j]
* else dp[i][j] = dp[i - 1][j];
* 3. if(s.charAt(0) == t.charAt(0)) dp[0][0] = 1;
* dp[i][0] = s[i]前面t[0]出现的次数
*/
int[][] dp = new int[s.length()][t.length()];
int rcd = 0;
for(int i = 0; i < s.length(); i++){
if(s.charAt(i) == t.charAt(0)){
rcd++;
}
dp[i][0] = rcd;
}
for(int i = 1; i < s.length(); i++){
for(int j = 1; j < t.length(); j++){
if(s.charAt(i) == t.charAt(j)) dp[i][j] = dp[i - 1][j - 1] + dp[i - 1][j];
else dp[i][j] = dp[i - 1][j];
}
}
return dp[s.length() - 1][t.length() - 1];
}
}
1710.卡车上的最大单元数
题目链接:1710. 卡车上的最大单元数 - 力扣(Leetcode)
解题思路:
掌握数组的排序方法,new比较器或者lambda表达式
class Solution {
public int maximumUnits(int[][] boxTypes, int truckSize) {
// Arrays.sort(boxTypes,new Comparator<int[]>(){
// public int compare(int[] a, int[] b){
// return b[1] - a[1];
// }
// });
Arrays.sort(boxTypes,(int[] a, int[] b)->{
return b[1] - a[1];
});
for(int i = 0; i < boxTypes.length; i++) {
System.out.println(Arrays.toString(boxTypes[i]));;
}
int ans = 0;
for(int[] b : boxTypes){
if(b[0] <= truckSize){
ans += b[0] * b[1];
truckSize -= b[0];
}else{
ans += b[1] * truckSize;
break;
}
}
return ans;
}
}