Open liuyingbin19222 opened 4 years ago
class Solution { private: int m; public: int longestArithSeqLength(vector<int>& A) { /* 通过记录差值来求出最长等差子数列; */ m = A.size(); if(m == 0) return 0; vector<unordered_map<int,int>> dp(m); // map<int,int> writeMap; int ret = 1; for(int i = 0;i < m; ++i){ for(int j = 0;j < i; ++j){ int dis = A[i] - A[j]; if(dp[j][dis]) { dp[i][dis] = dp[j][dis] + 1; } else { dp[i][dis] = 2;} ret = max(dp[i][dis],ret); } } return ret; } };
这里面用到的一个数据结构是unordered_map<int,int> 数据结构,unordered_map 数据结构是无序map , 类似于java 中的hash_map , 在空间复杂度方面,小于map ; unordered_map底层实现是红黑树;