leetcode 413 Arithmetic Slices C++

来源:互联网 发布:亚马逊买什么划算 知乎 编辑:程序博客网 时间:2024/05/16 01:31

最简单的解法就是3个一组,4个一组这样暴力的去遍历,效率低下。

所以通过找规律发现,等差数列每增加一个,总数增加的个数也是一个等差数列。

    int numberOfArithmeticSlices(vector<int>& A) {        if (A.size()<3) return 0;        int count = 0;        int phase = 0;        for(int i = 0;i<A.size() - 2;i++) {            if (A[i+1] - A[i] == A[i+2] - A[i+1]){                count += ++phase;            } else {                phase = 0;            }        }        return count;    }

所以这种题可以自己先拿笔找找规律。

0 0
原创粉丝点击