File tree Expand file tree Collapse file tree 5 files changed +75
-0
lines changed Expand file tree Collapse file tree 5 files changed +75
-0
lines changed Original file line number Diff line number Diff line change 169
169
- [ 300.最长递增子序列] ( ./day52/lc300.md )
170
170
- [ 674. 最长连续递增序列] ( ./day52/lc674.md )
171
171
- [ 718. 最长重复子数组] ( ./day52/lc718.md )
172
+ - [ day 53] ( ./day53.md )
173
+ - [ 1143.最长公共子序列] ( ./day53/lc1143.md )
174
+ - [ 1035.不相交的线] ( ./day53/lc1035.md )
175
+ - [ 53. 最大子序和] ( ./day53/lc53.md )
172
176
- [ remains] ( ./remains.md )
Original file line number Diff line number Diff line change
1
+ 1143.最长公共子序列
Original file line number Diff line number Diff line change
1
+ # 1035.不相交的线
2
+
3
+ 原来需要转化成‘最长公共子序列的长度’,一下子真不会
4
+
5
+ ``` cpp
6
+ class Solution {
7
+ public:
8
+ int maxUncrossedLines(vector<int >& v, vector<int >& w) {
9
+ // dp[ i] [ j ] :长度为[ 0, i - 1] 的字符串text1与长度为[ 0, j - 1] 的字符串text2的最长公共子序列为dp[ i] [ j ]
10
+ vector<vector<int >>dp(v.size()+1, vector<int >(w.size()+1, 0));
11
+ int result = 0;
12
+ for (int i = 1; i <= v.size(); i++) {
13
+ for (int j = 1; j <= w.size(); j++) {
14
+ if (v[ i - 1] == w[ j - 1] ) {
15
+ dp[ i] [ j ] = dp[ i - 1] [ j - 1 ] + 1;
16
+ } else {
17
+ dp[ i] [ j ] = max(dp[ i - 1] [ j ] , dp[ i] [ j - 1 ] );
18
+ }
19
+ if (dp[ i] [ j ] > result) result = dp[ i] [ j ] ;
20
+ }
21
+ }
22
+ return result;
23
+ }
24
+ };
25
+ ```
Original file line number Diff line number Diff line change
1
+ # 1143.最长公共子序列
2
+
3
+ 抄了随想录
4
+
5
+ ``` cpp
6
+ class Solution {
7
+ public:
8
+ int longestCommonSubsequence(string v, string w) {
9
+ // dp[ i] [ j ] :长度为[ 0, i - 1] 的字符串text1与长度为[ 0, j - 1] 的字符串text2的最长公共子序列为dp[ i] [ j ]
10
+ vector<vector<int >>dp(v.size()+1, vector<int >(w.size()+1, 0));
11
+ int result = 0;
12
+ for (int i = 1; i <= v.size(); i++) {
13
+ for (int j = 1; j <= w.size(); j++) {
14
+ if (v[ i - 1] == w[ j - 1] ) {
15
+ dp[ i] [ j ] = dp[ i - 1] [ j - 1 ] + 1;
16
+ } else {
17
+ dp[ i] [ j ] = max(dp[ i - 1] [ j ] , dp[ i] [ j - 1 ] );
18
+ }
19
+ if (dp[ i] [ j ] > result) result = dp[ i] [ j ] ;
20
+ }
21
+ }
22
+ return result;
23
+ }
24
+ };
25
+ ```
Original file line number Diff line number Diff line change
1
+ # 53. 最大子序和
2
+
3
+ 自己做的 喜喜
4
+
5
+ ``` cpp
6
+ class Solution {
7
+ public:
8
+ int maxSubArray(vector<int >& v) {
9
+ // dp[ i] 以前i个数结尾的连续子数组最大和
10
+ int res = v[ 0] ;
11
+ vector<int >dp(v.size(),0);
12
+ dp[ 0] =res;
13
+ for(int i=1;i<v.size();i++){
14
+ dp[ i] =max(v[ i] ,dp[ i-1] +v[ i] );
15
+ res=max(res,dp[ i] );
16
+ }
17
+ return res;
18
+ }
19
+ };
20
+ ```
You can’t perform that action at this time.
0 commit comments