G
N
I
D
A
O
L

如果一个数列由至少两个元素组成,且每两个连续元素之间的差值都相同,那么这个序列就是 等差数列 。更正式地,数列 s 是等差数列,只需要满足:对于每个有效的 is[i+1] - s[i] == s[1] - s[0] 都成立。

题目链接:https://leetcode.cn/problems/arithmetic-subarrays/

# 解题思路

直接枚举每个区间进行判断,判断等差数列的方法可以有很多种,一般采用先排序,再判断是否为等差数列。

# 提交结果

image.png

# 代码

a
class Solution {
    public List<Boolean> checkArithmeticSubarrays(int[] nums, int[] l, int[] r) {
        int n = l.length;
        List<Boolean> retList = new ArrayList<>();
        for (int i = 0; i < n; ++i) {
            boolean b = check(nums, l[i], r[i]);
            retList.add(b);
        }
        return retList;
    }
    private boolean check(int[] nums, int l, int r) {
        if (l > r || r - l < 2) return true;
        int[] arr = new int[r - l + 1];
        for (int i = l; i <= r; ++i)
            arr[i - l] = nums[i];
        Arrays.sort(arr);
        int d = arr[1] - arr[0];
        for (int i = 2; i < arr.length; ++i) {
            if (arr[i] - arr[i - 1] != d)
                return false;
        }
        return true;
    }
}
更新于 阅读次数

😉觉得写的还不错,请我喝杯咖啡吧😁

独步凌波 微信支付

微信支付

独步凌波 支付宝

支付宝