Arithmetic Slices

https://leetcode.com/problems/arithmetic-slices/


该题会给出一个递增数组,要求你找出所有长度大于三的,并且其中各相邻元素差值相等的数组。例如对于数组[1,2,3,4],满足条件的数组即为[1,2,3], [2,3,4], [1,2,3,4]


我采用的算法是从第三位开始遍历这个递增数组,比较该位置与其上两位之间的差值。若两者相同,则构造了一个解。构造辅助变量t1和t2,t1用于存放满足条件的上一数组的开头,而t2存的则是这种数组的差值。若t1对应的位置不是这个三元素数组的开头,且t2等于这个三元素数组的差值,则说明出现了更长的数组,于是结果进行相应的增加;若t2不等于其差值,或三元素等差关系不成立,即说明这三个元素无法与之前的数构成等差关系。此时要将t1还原回上一位,t2也需还原到新的等差数组的差值。


Arithmetic Slices_第1张图片

你可能感兴趣的:(Arithmetic Slices)