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+
17class 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+ }
621
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 );
1425 }
1526
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