Arithmetic Slices II - Subsequence
2017-01-07 10:20
405 查看
越往后做题越难了啊,像这种题不看答案根本没头绪
嘛,其实看个几天逐步推导应该也能有个大概思路,可惜最近真的没时间
记个discuss统一认同的答案吧
class Solution {
public:
int numberOfArithmeticSlices(vector<int>& A) {
if (A.empty()) return 0;
vector<unordered_map<int, int>> dp(A.size());//[index, [difference, count]]这里存储的是dif出现的次数
int res = 0;
for (int i = 0; i < A.size(); ++i) {
for (int j = 0; j < i; ++j) {
if ((long)A[i] - (long)A[j] > INT_MAX || (long)A[i] - (long)A[j] < INT_MIN) continue;// do not ignore this step, it will help you save time & space to pass OJ.
int dif = A[i] - A[j];
dp[i][dif] += 1;
if (dp[j].find(dif) != dp[j].end()) {
dp[i][dif] += dp[j][dif];
res += dp[j][dif];//res更新的时机简直精准,这一部分还没看太懂
}
}
}
return res;
}
};
嘛,其实看个几天逐步推导应该也能有个大概思路,可惜最近真的没时间
记个discuss统一认同的答案吧
class Solution {
public:
int numberOfArithmeticSlices(vector<int>& A) {
if (A.empty()) return 0;
vector<unordered_map<int, int>> dp(A.size());//[index, [difference, count]]这里存储的是dif出现的次数
int res = 0;
for (int i = 0; i < A.size(); ++i) {
for (int j = 0; j < i; ++j) {
if ((long)A[i] - (long)A[j] > INT_MAX || (long)A[i] - (long)A[j] < INT_MIN) continue;// do not ignore this step, it will help you save time & space to pass OJ.
int dif = A[i] - A[j];
dp[i][dif] += 1;
if (dp[j].find(dif) != dp[j].end()) {
dp[i][dif] += dp[j][dif];
res += dp[j][dif];//res更新的时机简直精准,这一部分还没看太懂
}
}
}
return res;
}
};
相关文章推荐
- Arithmetic Slices II - Subsequence
- [LeetCode] Arithmetic Slices II - Subsequence 算数切片之二 - 子序列
- 446. Arithmetic Slices II - Subsequence
- 446. Arithmetic Slices II - Subsequence - Hard
- [LeetCode] Arithmetic Slices II - Subsequence
- arithmetic-slices-ii-subsequence(太难了)
- Leetcode: Arithmetic Slices II - Subsequence
- Arithmetic Slices II
- leetcode 413 Arithmetic Slices C++
- [LintCode] Longest Increasing Continuous subsequence II
- LeetCode Longest Uncommon Subsequence II
- Arithmetic Slices——Difficulty:Memium
- Lintcode 389 Longest Increasing Continuous subsequence II
- 522. Longest Uncommon Subsequence II
- arithmetic-slices
- leetcode oj Arithmetic Slices
- [LintCode] Longest Increasing Continuous subsequence II
- leetcode 522. Longest Uncommon Subsequence II 最长非公共子序列 + 暴力寻找子串
- String-522-Longest Uncommon Subsequence II
- [LintCode] Longest Increasing Continuous subsequence II