leetcode

Solution to some Leetcode problems written in C++
git clone git://git.dimitrijedobrota.com/leetcode.git
Log | Files | Refs | README | LICENSE

1027.cpp (1006B)


0 class Solution {
1 public:
2 int longestArithSeqLength(vector<int> &nums) {
3 unordered_map<int, vector<int>> um;
4 int res = 2;
6 for (int i = 0; i < nums.size(); i++)
7 um[nums[i]].push_back(i);
8 for (const auto &[num1, vec1] : um) {
9 res = max(res, (int)vec1.size());
10 for (const auto &[num2, vec2] : um) {
11 if (num1 == num2) continue;
13 auto it = lower_bound(vec2.begin(), vec2.end(), vec1.front() + 1);
14 if (it == vec2.end()) continue;
16 int diff = num2 - num1, crnt = *it, count = 2, next;
17 while (true) {
18 if (!um.count(next = nums[crnt] + diff)) break;
19 auto it = lower_bound(um[next].begin(), um[next].end(), crnt + 1);
20 if (it == um[next].end()) break;
21 crnt = *it, count++;
22 }
23 res = max(res, count);
24 }
25 }
26 return res;
27 }
28 };