动态规划算法10
LeetCode 300 最长递增子序列 2023.12.15
题目链接 代码随想录讲解[链接]
int lengthOfLIS ( vector< int > & nums) { int result = 1 ; vector< int > dp ( nums. size ( ) , 1 ) ; for ( int i = 1 ; i < nums. size ( ) ; i++ ) { for ( int j = 0 ; j < i; j++ ) { if ( nums[ j] < nums[ i] ) dp[ i] = max ( dp[ j] + 1 , dp[ i] ) ; } if ( result < dp[ i] ) result = dp[ i] ; } return result;
}
LeetCode 674 最长连续递增序列 2023.12.15
题目链接 代码随想录讲解[链接]
int findLengthOfLCIS ( vector< int > & nums) { int result = 1 ; vector< int > dp ( nums. size ( ) , 1 ) ; for ( int i = 1 ; i < nums. size ( ) ; i++ ) { if ( nums[ i] > nums[ i- 1 ] ) dp[ i] = dp[ i- 1 ] + 1 ; if ( result < dp[ i] ) result = dp[ i] ; } return result;
}
LeetCode 718 最长重复子数组 2023.12.15
题目链接 代码随想录讲解[链接]
int findLength ( vector< int > & nums1, vector< int > & nums2) { int result = 0 ; vector< vector< int >> dp ( nums1. size ( ) + 1 , vector < int > ( nums2. size ( ) + 1 , 0 ) ) ; for ( int i = 1 ; i <= nums1. size ( ) ; i++ ) { for ( int j = 1 ; j <= nums2. size ( ) ; j++ ) { if ( nums1[ i- 1 ] == nums2[ j- 1 ] ) dp[ i] [ j] = dp[ i- 1 ] [ j- 1 ] + 1 ; if ( result < dp[ i] [ j] ) result = dp[ i] [ j] ; } } return result;
}