413. 等差数列划分

​ 在一个数组中寻找连续的等差数列。

指针加暴力循环

​ 作为暴力美学传承人,并没有想到用动态规划。这可能就是我和大佬的差距。

​ 执行用时:0 ms, 在所有 Java 提交中击败了100.00%的用户

​ 内存消耗:36.2 MB, 在所有 Java 提交中击败了63.07%的用户

class Solution {
    public int numberOfArithmeticSlices(int[] nums) {
        int len = nums.length;
        int res = 0;
        for(int i = 0;i < len;i++){
            //第一个指针找到a1
            int pointer = nums[i];
            if(i+1<len){
                //让next为等差数列第二项。
                int next = nums[i+1];
                //求出等差数列的d。
                int cut = next - pointer;
                //如果是升序>0, next = next+cut;如果是降序<0,next = next+cut。还有cut=0

                //所以不用if去区分 cut>0  cut<0 cut=0。
                
                //借助count计数器计算距离。
                for(int j = i+2,count=1;j<len;j++,count++){
                    if(nums[j]==(next+cut*count)){
                        res++;
                    }else{
                        break;
                    }
                }
            }                
        }
        return res;
    }
}