LeetCode 413.Arithmetic Slices 解题报告
2016-10-15 17:36
781 查看
LeetCode 413. Arithmetic Slices 解题报告
题目描述
A sequence of number is called arithmetic if it consists of at least three elements and if the difference between any two consecutive elements is the same.For example, these are arithmetic sequence:
The following sequence is not arithmetic.
A zero-indexed array A consisting of N numbers is given. A slice of that array is any pair of integers (P, Q) such that 0 <= P < Q < N.
A slice (P, Q) of array A is called arithmetic if the sequence:
A[P], A[p + 1], …, A[Q - 1], A[Q] is arithmetic. In particular, this means that P + 1 < Q.
The function should return the number of arithmetic slices in the array A.
示例
限制条件
没有明确给出.解题思路
我的思路:
这道题的题目不是一般的长,其实就是一个意思:给你一串数字,返回这串数字中能够构成等差数列的子串的数目。我的想法是通过扫描一遍数组就能得到结果,所以得先知道如果扫描发现下一个数字能够加入到等差数列中,那么总的数目会有怎样的变化。
因此,我列出了下表:
数组 | 等差数列的数目 | 与上一数组的等差数列数目比较 |
---|---|---|
1 2 3 | 1 | 1 - 0 = 1 |
1 2 3 4 | 3 | 3 - 1 = 2 |
1 2 3 4 5 | 6 | 6 - 3 = 3 |
1 2 3 4 5 6 | 10 | 10 - 6 = 4 |
1 2 3 4 5 6 7 | 15 | 15 - 10 = 5 |
按照这一点,在代码实现时就设置一个变量addend,表示增加的数目,它对应着[1,2, 3, 4, 5……]这个序列,如果下一个数组元素能够加入到等差数列中,addend就自增1,然后总的数目就增加addend。如果下一个数组元素不能加入到等差数列中,addend就重置为0。这样通过一个循环就能获得结果。
做完看了看其他人的代码,目前发现的最好的解法就是跟我一样的,似乎还没有更好的,其他稍复杂的解法就不贴出来了。
代码
我的代码
class Solution { public: int numberOfArithmeticSlices(vector<int>& A) { int count = 0; int addend = 0; for (int i = 2; i < A.size(); i++) if (A[i - 1] - A[i] == A[i - 2] - A[i - 1]) count += ++addend; else addend = 0; return count; } };
总结
这道新题虽然长,但是看懂了之后会发现其实不难,就是找找规律而已,所以在纸上写写就能很快做出来了。今天填了好几个坑,会写两篇解题报告,继续写下一篇!加油加油!
相关文章推荐
- 【LeetCode】413.Arithmetic Slices(Medium)解题报告
- 【LeetCode】413. Arithmetic Slices 解题报告(Python)
- LeetCode解题报告 413. Arithmetic Slices [medium]
- LeetCode - 413. Arithmetic Slices - 含中文题意解释 - O(n) - ( C++ ) - 解题报告
- [LeetCode]413. Arithmetic Slices 解题报告
- Leetcode 413. Arithmetic Slices 所有等差序列 解题报告
- LeetCode Plus One Java版解题报告
- LeetCode 102. Binary Tree Level Order Traversal 解题报告
- [Leetcode] 634. Find the Derangement of An Array 解题报告
- [LeetCode]Palindrome Partitioning,解题报告
- 【LeetCode】Longest Palindromic Substring 解题报告
- [leetcode] 320. Generalized Abbreviation 解题报告
- [Leetcode] 27. Remove Element 解题报告
- [Leetcode] 28. Implement strStr() 解题报告
- LeetCode(33) Search in Rotated Sorted Array解题报告
- leetcode解题报告(31):Kth Largest Element in an Array
- 【LeetCode】637.Average of Levels in Binary Tree(Easy)解题报告
- 【LeetCode】717. 1-bit and 2-bit Characters 解题报告
- [leetcode] 394. Decode String 解题报告
- LeetCode-Palindrome Linked List-解题报告