1. 程式人生 > >LeetCode 413. Arithmetic Slices [Medium]

LeetCode 413. Arithmetic Slices [Medium]

原題地址

題目內容

這裡寫圖片描述

題目分析

A[i]-A[i+1] = A[i+1]-A[i+2],這樣的式子成為arithmetic,也就是等差數列,題目的意思為,給你一個數組,問最多能分為多少個等差數列,每個數列至少含有3個數字。
一開始想用動態規劃的方法,但後面發現暴力求解也挺簡單的,就過了。對於每一個A[i]都求出從i開頭能分割多少組等差數列出來,然後tot++,一旦不行就從i+1開始繼續分,最後返回tot即可。

程式碼實現

class Solution {
public:
    int numberOfArithmeticSlices(vector<int
>
& A) { if(A.size() < 3){ return 0; } int tot = 0; for(int i = 0; i < A.size()-2; i++){ int j = i; while((A[j+1]-A[j] == A[j+2]-A[j+1]) && j+2 < A.size()){ j++; tot++; } } return
tot; } };