File tree Expand file tree Collapse file tree 1 file changed +22
-16
lines changed
solution/3400-3499/3409.Longest Subsequence With Decreasing Adjacent Difference Expand file tree Collapse file tree 1 file changed +22
-16
lines changed Original file line number Diff line number Diff line change
1
+ #include < vector>
2
+ #include < algorithm>
3
+ #include < ranges>
4
+ using namespace std ;
5
+ using namespace std ::ranges;
6
+
1
7
class Solution {
2
- public:
3
- int longestSubsequence (vector<int >& nums) {
4
- const int mx = ranges::max (nums);
5
- vector<vector<int >> dp (mx + 1 , vector<int >(mx + 1 ));
8
+ public:
9
+ int longestSubsequence (vector<int >& nums) {
10
+ const int mx = max (nums);
11
+ vector<vector<int >> dp (mx + 1 , vector<int >(mx + 1 ));
12
+
13
+ for (const int num : nums) {
14
+ for (int prev = 1 ; prev <= mx; ++prev) {
15
+ const int diff = abs (num - prev);
16
+ dp[num][diff] = max (dp[num][diff], dp[prev][diff] + 1 );
17
+ }
18
+ for (int j = mx - 1 ; j >= 0 ; --j)
19
+ dp[num][j] = max (dp[num][j], dp[num][j + 1 ]);
20
+ }
6
21
7
- for (const int num : nums) {
8
- for (int prev = 1 ; prev <= mx; ++prev) {
9
- const int diff = abs (num - prev);
10
- dp[num][diff] = max (dp[num][diff], dp[prev][diff] + 1 );
11
- }
12
- for (int j = mx - 1 ; j >= 0 ; --j)
13
- dp[num][j] = max (dp[num][j], dp[num][j + 1 ]);
22
+ return max_element (dp, less{}, [](const vector<int >& row) {
23
+ return row[0 ];
24
+ })->at (0 );
14
25
}
15
26
16
- return ranges::max_element (dp, ranges::less{}, [](const vector<int >& row) {
17
- return row[0 ];
18
- })->at (0 );
19
- }
20
- };
You can’t perform that action at this time.
0 commit comments