Skip to content

Commit dcbd15e

Browse files
committed
feat: add solutions to lc problem: No.0667
No.0667.Beautiful Arrangement II
1 parent 7323938 commit dcbd15e

File tree

7 files changed

+277
-2
lines changed

7 files changed

+277
-2
lines changed

solution/0600-0699/0667.Beautiful Arrangement II/README.md

+101-1
Original file line numberDiff line numberDiff line change
@@ -46,22 +46,122 @@
4646

4747
<!-- 这里可写通用的实现逻辑 -->
4848

49+
**方法一:构造**
50+
51+
先按照 `1, n, 2, n-1, 3,...` 构造答案数据 `ans` 的前 $k$ 个数,共产生 $k-1$ 个不同的整数。然后根据 $k$ 的奇偶性确定从哪个数开始构造下一个数。
52+
53+
时间复杂度 $O(n)$,忽略答案数组的空间消耗,空间复杂度 $O(1)$。
54+
4955
<!-- tabs:start -->
5056

5157
### **Python3**
5258

5359
<!-- 这里可写当前语言的特殊实现逻辑 -->
5460

5561
```python
56-
62+
class Solution:
63+
def constructArray(self, n: int, k: int) -> List[int]:
64+
l, r = 1, n
65+
ans = []
66+
for i in range(k):
67+
if i % 2 == 0:
68+
ans.append(l)
69+
l += 1
70+
else:
71+
ans.append(r)
72+
r -= 1
73+
for i in range(k, n):
74+
if k % 2 == 0:
75+
ans.append(r)
76+
r -= 1
77+
else:
78+
ans.append(l)
79+
l += 1
80+
return ans
5781
```
5882

5983
### **Java**
6084

6185
<!-- 这里可写当前语言的特殊实现逻辑 -->
6286

6387
```java
88+
class Solution {
89+
public int[] constructArray(int n, int k) {
90+
int l = 1, r = n;
91+
int[] ans = new int[n];
92+
for (int i = 0; i < k; ++i) {
93+
ans[i] = i % 2 == 0 ? l++ : r--;
94+
}
95+
for (int i = k; i < n; ++i) {
96+
ans[i] = k % 2 == 0 ? r-- : l++;
97+
}
98+
return ans;
99+
}
100+
}
101+
```
102+
103+
### **C++**
104+
105+
```cpp
106+
class Solution {
107+
public:
108+
vector<int> constructArray(int n, int k) {
109+
int l = 1, r = n;
110+
vector<int> ans(n);
111+
for (int i = 0; i < k; ++i) {
112+
ans[i] = i % 2 == 0 ? l++ : r--;
113+
}
114+
for (int i = k; i < n; ++i) {
115+
ans[i] = k % 2 == 0 ? r-- : l++;
116+
}
117+
return ans;
118+
}
119+
};
120+
```
121+
122+
### **Go**
123+
124+
```go
125+
func constructArray(n int, k int) []int {
126+
l, r := 1, n
127+
ans := make([]int, n)
128+
for i := 0; i < k; i++ {
129+
if i%2 == 0 {
130+
ans[i] = l
131+
l++
132+
} else {
133+
ans[i] = r
134+
r--
135+
}
136+
}
137+
for i := k; i < n; i++ {
138+
if k%2 == 0 {
139+
ans[i] = r
140+
r--
141+
} else {
142+
ans[i] = l
143+
l++
144+
}
145+
}
146+
return ans
147+
}
148+
```
64149

150+
### **TypeScript**
151+
152+
```ts
153+
function constructArray(n: number, k: number): number[] {
154+
let l = 1;
155+
let r = n;
156+
const ans = new Array(n);
157+
for (let i = 0; i < k; ++i) {
158+
ans[i] = i % 2 == 0 ? l++ : r--;
159+
}
160+
for (let i = k; i < n; ++i) {
161+
ans[i] = k % 2 == 0 ? r-- : l++;
162+
}
163+
return ans;
164+
}
65165
```
66166

67167
### **...**

solution/0600-0699/0667.Beautiful Arrangement II/README_EN.md

+95-1
Original file line numberDiff line numberDiff line change
@@ -43,13 +43,107 @@ Explanation: The [1,3,2] has three different positive integers ranging from 1 to
4343
### **Python3**
4444

4545
```python
46-
46+
class Solution:
47+
def constructArray(self, n: int, k: int) -> List[int]:
48+
l, r = 1, n
49+
ans = []
50+
for i in range(k):
51+
if i % 2 == 0:
52+
ans.append(l)
53+
l += 1
54+
else:
55+
ans.append(r)
56+
r -= 1
57+
for i in range(k, n):
58+
if k % 2 == 0:
59+
ans.append(r)
60+
r -= 1
61+
else:
62+
ans.append(l)
63+
l += 1
64+
return ans
4765
```
4866

4967
### **Java**
5068

5169
```java
70+
class Solution {
71+
public int[] constructArray(int n, int k) {
72+
int l = 1, r = n;
73+
int[] ans = new int[n];
74+
for (int i = 0; i < k; ++i) {
75+
ans[i] = i % 2 == 0 ? l++ : r--;
76+
}
77+
for (int i = k; i < n; ++i) {
78+
ans[i] = k % 2 == 0 ? r-- : l++;
79+
}
80+
return ans;
81+
}
82+
}
83+
```
84+
85+
### **C++**
86+
87+
```cpp
88+
class Solution {
89+
public:
90+
vector<int> constructArray(int n, int k) {
91+
int l = 1, r = n;
92+
vector<int> ans(n);
93+
for (int i = 0; i < k; ++i) {
94+
ans[i] = i % 2 == 0 ? l++ : r--;
95+
}
96+
for (int i = k; i < n; ++i) {
97+
ans[i] = k % 2 == 0 ? r-- : l++;
98+
}
99+
return ans;
100+
}
101+
};
102+
```
103+
104+
### **Go**
105+
106+
```go
107+
func constructArray(n int, k int) []int {
108+
l, r := 1, n
109+
ans := make([]int, n)
110+
for i := 0; i < k; i++ {
111+
if i%2 == 0 {
112+
ans[i] = l
113+
l++
114+
} else {
115+
ans[i] = r
116+
r--
117+
}
118+
}
119+
for i := k; i < n; i++ {
120+
if k%2 == 0 {
121+
ans[i] = r
122+
r--
123+
} else {
124+
ans[i] = l
125+
l++
126+
}
127+
}
128+
return ans
129+
}
130+
```
52131

132+
### **TypeScript**
133+
134+
```ts
135+
function constructArray(n: number, k: number): number[] {
136+
let l = 1;
137+
let r = n;
138+
const ans = new Array(n);
139+
for (let i = 0; i < k; ++i) {
140+
ans[i] = i % 2 == 0 ? l++ : r--;
141+
}
142+
for (let i = k; i < n; ++i) {
143+
ans[i] = k % 2 == 0 ? r-- : l++;
144+
}
145+
return ans;
146+
}
53147
```
54148

55149
### **...**
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
class Solution {
2+
public:
3+
vector<int> constructArray(int n, int k) {
4+
int l = 1, r = n;
5+
vector<int> ans(n);
6+
for (int i = 0; i < k; ++i) {
7+
ans[i] = i % 2 == 0 ? l++ : r--;
8+
}
9+
for (int i = k; i < n; ++i) {
10+
ans[i] = k % 2 == 0 ? r-- : l++;
11+
}
12+
return ans;
13+
}
14+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
func constructArray(n int, k int) []int {
2+
l, r := 1, n
3+
ans := make([]int, n)
4+
for i := 0; i < k; i++ {
5+
if i%2 == 0 {
6+
ans[i] = l
7+
l++
8+
} else {
9+
ans[i] = r
10+
r--
11+
}
12+
}
13+
for i := k; i < n; i++ {
14+
if k%2 == 0 {
15+
ans[i] = r
16+
r--
17+
} else {
18+
ans[i] = l
19+
l++
20+
}
21+
}
22+
return ans
23+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
class Solution {
2+
public int[] constructArray(int n, int k) {
3+
int l = 1, r = n;
4+
int[] ans = new int[n];
5+
for (int i = 0; i < k; ++i) {
6+
ans[i] = i % 2 == 0 ? l++ : r--;
7+
}
8+
for (int i = k; i < n; ++i) {
9+
ans[i] = k % 2 == 0 ? r-- : l++;
10+
}
11+
return ans;
12+
}
13+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
class Solution:
2+
def constructArray(self, n: int, k: int) -> List[int]:
3+
l, r = 1, n
4+
ans = []
5+
for i in range(k):
6+
if i % 2 == 0:
7+
ans.append(l)
8+
l += 1
9+
else:
10+
ans.append(r)
11+
r -= 1
12+
for i in range(k, n):
13+
if k % 2 == 0:
14+
ans.append(r)
15+
r -= 1
16+
else:
17+
ans.append(l)
18+
l += 1
19+
return ans
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
function constructArray(n: number, k: number): number[] {
2+
let l = 1;
3+
let r = n;
4+
const ans = new Array(n);
5+
for (let i = 0; i < k; ++i) {
6+
ans[i] = i % 2 == 0 ? l++ : r--;
7+
}
8+
for (let i = k; i < n; ++i) {
9+
ans[i] = k % 2 == 0 ? r-- : l++;
10+
}
11+
return ans;
12+
}

0 commit comments

Comments
 (0)