如果一个数列由至少两个元素组成,且每两个连续元素之间的差值都相同,那么这个序列就是 等差数列 。更正式地,数列 s
是等差数列,只需要满足:对于每个有效的 i
, s[i+1] - s[i] == s[1] - s[0]
都成立。
题目链接:https://leetcode.cn/problems/arithmetic-subarrays/
# 解题思路
直接枚举每个区间进行判断,判断等差数列的方法可以有很多种,一般采用先排序,再判断是否为等差数列。
# 提交结果
# 代码
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; | |
} | |
} |