Skip to content

Commit 139ad98

Browse files
committed
feat: add solutions to lc problem: No.1502
No.1502.Can Make Arithmetic Progression From Sequence
1 parent 5b55de1 commit 139ad98

File tree

7 files changed

+111
-19
lines changed

7 files changed

+111
-19
lines changed

solution/1400-1499/1496.Path Crossing/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@
4747

4848
**方法一:哈希表**
4949

50-
我们可以用一个哈希表 $vis$ 记录路径上的点。初始时$vis$ 中只有原点 $(0, 0)$。
50+
我们可以用一个哈希表 $vis$ 记录路径上的点。初始时 $vis$ 中只有原点 $(0, 0)$。
5151

5252
遍历字符串 $path$,对于每个字符 $c$,根据 $c$ 的值更新当前位置 $(i, j)$,然后判断 $(i, j)$ 是否在 $vis$ 中,如果在,则返回 `true`,否则将 $(i, j)$ 加入 $vis$ 中。
5353

solution/1500-1599/1502.Can Make Arithmetic Progression From Sequence/README.md

Lines changed: 44 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,12 @@
4141

4242
<!-- 这里可写通用的实现逻辑 -->
4343

44+
**方法一:排序 + 遍历**
45+
46+
我们可以先将数组 `arr` 排序,然后遍历数组,判断相邻两项的差是否相等即可。
47+
48+
时间复杂度 $O(n \times \log n)$,空间复杂度 $O(\log n)$。其中 $n$ 为数组 `arr` 的长度。
49+
4450
<!-- tabs:start -->
4551

4652
### **Python3**
@@ -51,10 +57,8 @@
5157
class Solution:
5258
def canMakeArithmeticProgression(self, arr: List[int]) -> bool:
5359
arr.sort()
54-
for i in range(1, len(arr) - 1):
55-
if (arr[i] << 1) != arr[i - 1] + arr[i + 1]:
56-
return False
57-
return True
60+
d = arr[1] - arr[0]
61+
return all(b - a == d for a, b in pairwise(arr))
5862
```
5963

6064
### **Java**
@@ -65,13 +69,47 @@ class Solution:
6569
class Solution {
6670
public boolean canMakeArithmeticProgression(int[] arr) {
6771
Arrays.sort(arr);
68-
for (int i = 1; i < arr.length - 1; ++i) {
69-
if ((arr[i] << 1) != arr[i - 1] + arr[i + 1]) {
72+
int d = arr[1] - arr[0];
73+
for (int i = 2; i < arr.length; ++i) {
74+
if (arr[i] - arr[i - 1] != d) {
75+
return false;
76+
}
77+
}
78+
return true;
79+
}
80+
}
81+
```
82+
83+
### **C++**
84+
85+
```cpp
86+
class Solution {
87+
public:
88+
bool canMakeArithmeticProgression(vector<int>& arr) {
89+
sort(arr.begin(), arr.end());
90+
int d = arr[1] - arr[0];
91+
for (int i = 2; i < arr.size(); i++) {
92+
if (arr[i] - arr[i - 1] != d) {
7093
return false;
7194
}
7295
}
7396
return true;
7497
}
98+
};
99+
```
100+
101+
### **Go**
102+
103+
```go
104+
func canMakeArithmeticProgression(arr []int) bool {
105+
sort.Ints(arr)
106+
d := arr[1] - arr[0]
107+
for i := 2; i < len(arr); i++ {
108+
if arr[i]-arr[i-1] != d {
109+
return false
110+
}
111+
}
112+
return true
75113
}
76114
```
77115

solution/1500-1599/1502.Can Make Arithmetic Progression From Sequence/README_EN.md

Lines changed: 38 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,8 @@
4343
class Solution:
4444
def canMakeArithmeticProgression(self, arr: List[int]) -> bool:
4545
arr.sort()
46-
for i in range(1, len(arr) - 1):
47-
if (arr[i] << 1) != arr[i - 1] + arr[i + 1]:
48-
return False
49-
return True
46+
d = arr[1] - arr[0]
47+
return all(b - a == d for a, b in pairwise(arr))
5048
```
5149

5250
### **Java**
@@ -55,8 +53,9 @@ class Solution:
5553
class Solution {
5654
public boolean canMakeArithmeticProgression(int[] arr) {
5755
Arrays.sort(arr);
58-
for (int i = 1; i < arr.length - 1; ++i) {
59-
if ((arr[i] << 1) != arr[i - 1] + arr[i + 1]) {
56+
int d = arr[1] - arr[0];
57+
for (int i = 2; i < arr.length; ++i) {
58+
if (arr[i] - arr[i - 1] != d) {
6059
return false;
6160
}
6261
}
@@ -65,6 +64,39 @@ class Solution {
6564
}
6665
```
6766

67+
### **C++**
68+
69+
```cpp
70+
class Solution {
71+
public:
72+
bool canMakeArithmeticProgression(vector<int>& arr) {
73+
sort(arr.begin(), arr.end());
74+
int d = arr[1] - arr[0];
75+
for (int i = 2; i < arr.size(); i++) {
76+
if (arr[i] - arr[i - 1] != d) {
77+
return false;
78+
}
79+
}
80+
return true;
81+
}
82+
};
83+
```
84+
85+
### **Go**
86+
87+
```go
88+
func canMakeArithmeticProgression(arr []int) bool {
89+
sort.Ints(arr)
90+
d := arr[1] - arr[0]
91+
for i := 2; i < len(arr); i++ {
92+
if arr[i]-arr[i-1] != d {
93+
return false
94+
}
95+
}
96+
return true
97+
}
98+
```
99+
68100
### **JavaScript**
69101

70102
```js
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
class Solution {
2+
public:
3+
bool canMakeArithmeticProgression(vector<int>& arr) {
4+
sort(arr.begin(), arr.end());
5+
int d = arr[1] - arr[0];
6+
for (int i = 2; i < arr.size(); i++) {
7+
if (arr[i] - arr[i - 1] != d) {
8+
return false;
9+
}
10+
}
11+
return true;
12+
}
13+
};
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
func canMakeArithmeticProgression(arr []int) bool {
2+
sort.Ints(arr)
3+
d := arr[1] - arr[0]
4+
for i := 2; i < len(arr); i++ {
5+
if arr[i]-arr[i-1] != d {
6+
return false
7+
}
8+
}
9+
return true
10+
}

solution/1500-1599/1502.Can Make Arithmetic Progression From Sequence/Solution.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
class Solution {
22
public boolean canMakeArithmeticProgression(int[] arr) {
33
Arrays.sort(arr);
4-
for (int i = 1; i < arr.length - 1; ++i) {
5-
if ((arr[i] << 1) != arr[i - 1] + arr[i + 1]) {
4+
int d = arr[1] - arr[0];
5+
for (int i = 2; i < arr.length; ++i) {
6+
if (arr[i] - arr[i - 1] != d) {
67
return false;
78
}
89
}
Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
class Solution:
22
def canMakeArithmeticProgression(self, arr: List[int]) -> bool:
33
arr.sort()
4-
for i in range(1, len(arr) - 1):
5-
if (arr[i] << 1) != arr[i - 1] + arr[i + 1]:
6-
return False
7-
return True
4+
d = arr[1] - arr[0]
5+
return all(b - a == d for a, b in pairwise(arr))

0 commit comments

Comments
 (0)