赞
踩
- class Solution {
- public:
- int longestArithSeqLength(vector<int>& nums) {
- auto [minit, maxit] = std::minmax_element(nums.begin(), nums.end());
- int diff = *maxit - *minit;
- int ans = 0;
- for (int d = -diff; d <= diff; ++d) {
- std::unordered_map<int, int> dp;
- for (int v : nums) {
- dp[v] = dp[v - d] + 1;
- ans = std::max(ans, dp[v]);
- }
- }
-
- return ans;
- }
- };

- class Solution {
- public:
- int longestArithSeqLength(vector<int>& nums) {
- auto [minit, maxit] = std::minmax_element(nums.begin(), nums.end());
- int diff = *maxit - *minit;
- int ans = 1;
- for (int d = -diff; d <= diff; ++d) {
- std::vector<int> dp(*maxit + 1, -1);
- for (int v : nums) {
- int prev = v - d;
- // ensure prev is in nums and has exist(or v is the first item)
- if (prev >= *minit && prev <= *maxit && dp[prev] != -1) {
- dp[v] = std::max(dp[v], dp[prev] + 1);
- ans = std::max(ans, dp[v]);
- }
- dp[v] = std::max(dp[v], 1);
- }
- }
-
- return ans;
- }
- };

——————————————————————————————

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。