Leetcode 1502. Can Make Arithmetic Progression From Sequence
今天开始刷leetcode,写博客来记录自己的解题思路与过程。
题目链接:Can Make Arithmetic Progression From Sequence
难度:easy
题目大意:输入一组数,判断能否用这些数组成一个等差数列。
思路:
1、自己想到的是先将数组排序,然后相邻两个数作差,如果作差的结果都相等,则数组的元素可以组成一个等差数列。
2、参考高赞回答,找出数组中的最大值与最小值,如果是等差数列,an=a1+(n-1)d,算出d,根据最小值和d可以求出等差数列的每一项,然后判断数组是否包含每一项,则数组的元素可以组成一个等差数列。需要用到集合的知识,我暂时写不出代码。
代码
思路1代码
```java
class Solution {
public boolean canMakeArithmeticProgression(int[] arr) {
int N=arr.length;
for(int i=1;i<N;i++){//插入排序
for(int j=i;j>0&&arr[j]<arr[j-1];j--){
int item=arr[j];
arr[j]=arr[j-1];
arr[j-1]=item;
}
}
int diff=arr[1]-arr[0];
for(int i=2;i<N;i++){
if(arr[i]-arr[i-1]!=diff){
return false;
}
}
return true;
}
}