Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit edf55b5

Browse files
committed
Create 1502. 判断能否形成等差数列.md
1 parent fa44d62 commit edf55b5

File tree

1 file changed

+51
-0
lines changed

1 file changed

+51
-0
lines changed
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
## [1502. 判断能否形成等差数列](https://leetcode-cn.com/problems/can-make-arithmetic-progression-from-sequence/)
2+
3+
- 标签:数组、排序
4+
- 难度:简单
5+
6+
## 题目大意
7+
8+
**描述**:给定一个数字数组 `arr`。如果一个数列中,任意相邻两项的差总等于同一个常数,那么这个数序就称为等差数列。
9+
10+
**要求**:如果数组 `arr` 通过重新排列可以形成等差数列,则返回 `True`;否则返回 `False`
11+
12+
**说明**
13+
14+
- $2 \le arr.length \le 1000$
15+
- $-10^6 \le arr[i] \le 10^6$
16+
17+
**示例**
18+
19+
```Python
20+
给定 arr = [3,5,1]
21+
输出 True
22+
解释 数组重新排序后得到 [1,3,5] 或者 [5,3,1],任意相邻两项的差分别为 2-2 ,可以形成等差数列。
23+
```
24+
25+
## 解题思路
26+
27+
### 思路 1:
28+
29+
- 如果数组元素个数小于等于 `2`,则数组肯定可以形成等差数列,直接返回 `True`
30+
- 对数组进行排序。
31+
- 从下标为 `2` 的元素开始,遍历相邻的 `3` 个元素 `arr[i]``arr[i - 1]``arr[i - 2]`。判断 `arr[i] - arr[i - 1]` 是否等于 `arr[i - 1] - arr[i - 2]`。如果不等于,则数组无法形成等差数列,返回 `False`
32+
- 如果遍历完数组,则说明数组可以形成等差数列,返回 `True`
33+
34+
## 代码
35+
36+
### 思路 1 代码:
37+
38+
```Python
39+
class Solution:
40+
def canMakeArithmeticProgression(self, arr: List[int]) -> bool:
41+
size = len(arr)
42+
if size <= 2:
43+
return True
44+
45+
arr.sort()
46+
for i in range(2, size):
47+
if arr[i] - arr[i - 1] != arr[i - 1] - arr[i - 2]:
48+
return False
49+
return True
50+
```
51+

0 commit comments

Comments
 (0)