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:

<pre>1, 3, 5, 7, 9
7, 7, 7, 7
3, -1, -5, -9</pre>

The following sequence is not arithmetic.

<pre>1, 1, 2, 5, 7</pre>

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.

Example:
<pre>
A = [1, 2, 3, 4]
return: 3, for 3 arithmetic slices in A:
[1, 2, 3], [2, 3, 4] and [1, 2, 3, 4] itself.
</pre>
其實這題沒怎么讀明白,大概的意思就是問這一串?dāng)?shù)里頭包含多少個等差數(shù)列,最短的是三個成一個等差數(shù)列。
<pre>
1,2,3// 1個 [1 2 3]
1,2,3,4// 3個 [1 2 3] [2 3 4] [1 2 3 4]
1,2,3,4,5//6個[1 2 3][2 3 4][3 4 5] [1 2 3 4][2 3 4 5] [1 2 3 4 5]
</pre>
這個有規(guī)律,按數(shù)列元素個數(shù)分,N個數(shù)的等差數(shù)列有N-2 種,N+1個數(shù)的,相當(dāng)于前N-2種每種比N個的多一個,再多加一個N+1個數(shù)的數(shù)列,相當(dāng)于N+1的比N個數(shù)的多N-2+1個,即(N+1)-2個。
所以就循環(huán),從頭到尾數(shù),可以組成幾個最長的等差數(shù)列就好了。累加起來就是結(jié)果。
代碼如下。

class Solution {
public:
    int numberOfArithmeticSlices(vector<int>& A) {
        int res = 0;
        int add = 0; //這個數(shù)與前頭形成等差數(shù)列,會增加幾個等差數(shù)列。
        for(int i = 2;i<A.size();i++)
        {
            if(A[i-1]-A[i-2] == A[i]-A[i-1])
            {
                add++;  
                res += add;
            }
            else
                add = 0;
        }
        return res;   
    }
};
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • **2014真題Directions:Read the following text. Choose the be...
    又是夜半驚坐起閱讀 9,934評論 0 23
  • 轉(zhuǎn)載:互聯(lián)網(wǎng)產(chǎn)品經(jīng)理面試二三事(部分內(nèi)容/整理) 1、時 間:6個月 階 段:入行期 工作內(nèi)容:產(chǎn)品策...
    東沒米星客閱讀 293評論 0 3
  • 懂得放下不是不做事,而是從內(nèi)心要放下,從內(nèi)心不要去執(zhí)著,不要去擔(dān)憂,才是放下。成都文殊院有一副對聯(lián)的上聯(lián):...
    Lc林川閱讀 161評論 1 2
  • #寫在前面(原來沒有寫TT) 文章是根據(jù)真實事件改編而成,之后故事會出現(xiàn)虛擬人名,大家盡情期待(′`〃) 初中生文...
    久殤閱讀 437評論 2 7
  • 世界讓你瘋狂,但是你不能瘋狂 別跳起來揍它一拳 站著,冷冷的盯著它
    johnnywaiting閱讀 174評論 0 1