All Downloads are FREE. Search and download functionalities are using the official Maven repository.

g0401_0500.s0413_arithmetic_slices.Solution Maven / Gradle / Ivy

There is a newer version: 1.38
Show newest version
package g0401_0500.s0413_arithmetic_slices;

// #Medium #Array #Dynamic_Programming #Algorithm_II_Day_14_Dynamic_Programming
// #Dynamic_Programming_I_Day_10 #2022_07_16_Time_0_ms_(100.00%)_Space_42.6_MB_(14.82%)

/**
 * 413 - Arithmetic Slices\.
 *
 * Medium
 *
 * An integer array 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, `[1,3,5,7,9]`, `[7,7,7,7]`, and `[3,-1,-5,-9]` are arithmetic sequences.
 *
 * Given an integer array `nums`, return _the number of arithmetic **subarrays** of_ `nums`.
 *
 * A **subarray** is a contiguous subsequence of the array.
 *
 * **Example 1:**
 *
 * **Input:** nums = [1,2,3,4]
 *
 * **Output:** 3
 *
 * **Explanation:** We have 3 arithmetic slices in nums: [1, 2, 3], [2, 3, 4] and [1,2,3,4] itself. 
 *
 * **Example 2:**
 *
 * **Input:** nums = [1]
 *
 * **Output:** 0 
 *
 * **Constraints:**
 *
 * *   `1 <= nums.length <= 5000`
 * *   `-1000 <= nums[i] <= 1000`
**/
public class Solution {
    public int numberOfArithmeticSlices(int[] nums) {
        int sum = 0;
        int curr = 0;
        for (int i = 2; i < nums.length; i++) {
            if (nums[i] - nums[i - 1] == nums[i - 1] - nums[i - 2]) {
                curr++;
                sum += curr;
            } else {
                curr = 0;
            }
        }
        return sum;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy