Skip to content

Commit 66c249d

Browse files
committed
feat: add solutions to lc problems: No.1646,2022
* No.1646.Get Maximum in Generated Array * No.2022.Convert 1D Array Into 2D Array
1 parent a38820d commit 66c249d

File tree

12 files changed

+350
-6
lines changed

12 files changed

+350
-6
lines changed

solution/1600-1699/1646.Get Maximum in Generated Array/README.md

+71-2
Original file line numberDiff line numberDiff line change
@@ -60,27 +60,96 @@
6060
<li><code>0 <= n <= 100</code></li>
6161
</ul>
6262

63-
6463
## 解法
6564

6665
<!-- 这里可写通用的实现逻辑 -->
6766

67+
直接模拟生成 nums 数组,然后求 nums 中元素的最大值即可。
68+
6869
<!-- tabs:start -->
6970

7071
### **Python3**
7172

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

7475
```python
75-
76+
class Solution:
77+
def getMaximumGenerated(self, n: int) -> int:
78+
if n == 0:
79+
return 0
80+
nums = [0] * (n + 1)
81+
nums[1] = 1
82+
for i in range(2, n + 1):
83+
nums[i] = nums[i >> 1] if i % 2 == 0 else nums[i >> 1] + \
84+
nums[(i >> 1) + 1]
85+
return max(nums)
7686
```
7787

7888
### **Java**
7989

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

8292
```java
93+
class Solution {
94+
public int getMaximumGenerated(int n) {
95+
if (n == 0) {
96+
return 0;
97+
}
98+
int[] nums = new int[n + 1];
99+
nums[1] = 1;
100+
for (int i = 2; i < n + 1; ++i) {
101+
nums[i] = i % 2 == 0 ? nums[i >> 1] : nums[i >> 1] + nums[(i >> 1) + 1];
102+
}
103+
return Arrays.stream(nums).max().getAsInt();
104+
}
105+
}
106+
```
107+
108+
### **C++**
109+
110+
```cpp
111+
class Solution {
112+
public:
113+
int getMaximumGenerated(int n) {
114+
if (n == 0) return 0;
115+
vector<int> ans(n + 1, 0);
116+
ans[1] = 1;
117+
for (int i = 2; i < n + 1; ++i)
118+
ans[i] = i % 2 == 0 ? ans[i >> 1] : ans[i >> 1] + ans[(i >> 1) + 1];
119+
return *max_element(ans.begin(), ans.end());
120+
}
121+
};
122+
```
83123
124+
### **Go**
125+
126+
```go
127+
func getMaximumGenerated(n int) int {
128+
if n == 0 {
129+
return 0
130+
}
131+
nums := make([]int, n+1)
132+
nums[1] = 1
133+
for i := 2; i <= n; i++ {
134+
if i%2 == 0 {
135+
nums[i] = nums[i>>1]
136+
} else {
137+
nums[i] = nums[i>>1] + nums[(i>>1)+1]
138+
}
139+
}
140+
var ans int
141+
for _, num := range nums {
142+
ans = max(ans, num)
143+
}
144+
return ans
145+
}
146+
147+
func max(a, b int) int {
148+
if a > b {
149+
return a
150+
}
151+
return b
152+
}
84153
```
85154

86155
### **...**

solution/1600-1699/1646.Get Maximum in Generated Array/README_EN.md

+69-2
Original file line numberDiff line numberDiff line change
@@ -56,21 +56,88 @@ Hence, nums = [0,1,1,2,1,3,2,3], and the maximum is 3.
5656
<li><code>0 &lt;= n &lt;= 100</code></li>
5757
</ul>
5858

59-
6059
## Solutions
6160

6261
<!-- tabs:start -->
6362

6463
### **Python3**
6564

6665
```python
67-
66+
class Solution:
67+
def getMaximumGenerated(self, n: int) -> int:
68+
if n == 0:
69+
return 0
70+
nums = [0] * (n + 1)
71+
nums[1] = 1
72+
for i in range(2, n + 1):
73+
nums[i] = nums[i >> 1] if i % 2 == 0 else nums[i >> 1] + \
74+
nums[(i >> 1) + 1]
75+
return max(nums)
6876
```
6977

7078
### **Java**
7179

7280
```java
81+
class Solution {
82+
public int getMaximumGenerated(int n) {
83+
if (n == 0) {
84+
return 0;
85+
}
86+
int[] nums = new int[n + 1];
87+
nums[1] = 1;
88+
for (int i = 2; i < n + 1; ++i) {
89+
nums[i] = i % 2 == 0 ? nums[i >> 1] : nums[i >> 1] + nums[(i >> 1) + 1];
90+
}
91+
return Arrays.stream(nums).max().getAsInt();
92+
}
93+
}
94+
```
95+
96+
### **C++**
97+
98+
```cpp
99+
class Solution {
100+
public:
101+
int getMaximumGenerated(int n) {
102+
if (n == 0) return 0;
103+
vector<int> ans(n + 1, 0);
104+
ans[1] = 1;
105+
for (int i = 2; i < n + 1; ++i)
106+
ans[i] = i % 2 == 0 ? ans[i >> 1] : ans[i >> 1] + ans[(i >> 1) + 1];
107+
return *max_element(ans.begin(), ans.end());
108+
}
109+
};
110+
```
73111
112+
### **Go**
113+
114+
```go
115+
func getMaximumGenerated(n int) int {
116+
if n == 0 {
117+
return 0
118+
}
119+
nums := make([]int, n+1)
120+
nums[1] = 1
121+
for i := 2; i <= n; i++ {
122+
if i%2 == 0 {
123+
nums[i] = nums[i>>1]
124+
} else {
125+
nums[i] = nums[i>>1] + nums[(i>>1)+1]
126+
}
127+
}
128+
var ans int
129+
for _, num := range nums {
130+
ans = max(ans, num)
131+
}
132+
return ans
133+
}
134+
135+
func max(a, b int) int {
136+
if a > b {
137+
return a
138+
}
139+
return b
140+
}
74141
```
75142

76143
### **...**
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
class Solution {
2+
public:
3+
int getMaximumGenerated(int n) {
4+
if (n == 0) return 0;
5+
vector<int> ans(n + 1, 0);
6+
ans[1] = 1;
7+
for (int i = 2; i < n + 1; ++i)
8+
ans[i] = i % 2 == 0 ? ans[i >> 1] : ans[i >> 1] + ans[(i >> 1) + 1];
9+
return *max_element(ans.begin(), ans.end());
10+
}
11+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
func getMaximumGenerated(n int) int {
2+
if n == 0 {
3+
return 0
4+
}
5+
nums := make([]int, n+1)
6+
nums[1] = 1
7+
for i := 2; i <= n; i++ {
8+
if i%2 == 0 {
9+
nums[i] = nums[i>>1]
10+
} else {
11+
nums[i] = nums[i>>1] + nums[(i>>1)+1]
12+
}
13+
}
14+
var ans int
15+
for _, num := range nums {
16+
ans = max(ans, num)
17+
}
18+
return ans
19+
}
20+
21+
func max(a, b int) int {
22+
if a > b {
23+
return a
24+
}
25+
return b
26+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
class Solution {
2+
public int getMaximumGenerated(int n) {
3+
if (n == 0) {
4+
return 0;
5+
}
6+
int[] nums = new int[n + 1];
7+
nums[1] = 1;
8+
for (int i = 2; i < n + 1; ++i) {
9+
nums[i] = i % 2 == 0 ? nums[i >> 1] : nums[i >> 1] + nums[(i >> 1) + 1];
10+
}
11+
return Arrays.stream(nums).max().getAsInt();
12+
}
13+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
class Solution:
2+
def getMaximumGenerated(self, n: int) -> int:
3+
if n == 0:
4+
return 0
5+
nums = [0] * (n + 1)
6+
nums[1] = 1
7+
for i in range(2, n + 1):
8+
nums[i] = nums[i >> 1] if i % 2 == 0 else nums[i >> 1] + \
9+
nums[(i >> 1) + 1]
10+
return max(nums)

solution/2000-2099/2022.Convert 1D Array Into 2D Array/README.md

+53-1
Original file line numberDiff line numberDiff line change
@@ -72,15 +72,67 @@ original 中只有 1 个元素。
7272
<!-- 这里可写当前语言的特殊实现逻辑 -->
7373

7474
```python
75-
75+
class Solution:
76+
def construct2DArray(self, original: List[int], m: int, n: int) -> List[List[int]]:
77+
if m * n != len(original):
78+
return []
79+
return [original[i: i + n] for i in range(0, m * n, n)]
7680
```
7781

7882
### **Java**
7983

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

8286
```java
87+
class Solution {
88+
public int[][] construct2DArray(int[] original, int m, int n) {
89+
if (m * n != original.length) {
90+
return new int[0][0];
91+
}
92+
int[][] ans = new int[m][n];
93+
for (int i = 0; i < m; ++i) {
94+
for (int j = 0; j < n; ++j) {
95+
ans[i][j] = original[i * n + j];
96+
}
97+
}
98+
return ans;
99+
}
100+
}
101+
```
102+
103+
### **C++**
104+
105+
```cpp
106+
class Solution {
107+
public:
108+
vector<vector<int>> construct2DArray(vector<int>& original, int m, int n) {
109+
if (m * n != original.size()) return {};
110+
vector<vector<int>> ans(m, vector<int>(n, 0));
111+
for (int i = 0; i < m; ++i)
112+
{
113+
for (int j = 0; j < n; ++j)
114+
{
115+
ans[i][j] = original[i * n + j];
116+
}
117+
}
118+
return ans;
119+
}
120+
};
121+
```
83122
123+
### **Go**
124+
125+
```go
126+
func construct2DArray(original []int, m int, n int) [][]int {
127+
if m*n != len(original) {
128+
return [][]int{}
129+
}
130+
var ans [][]int
131+
for i := 0; i < m*n; i += n {
132+
ans = append(ans, original[i:i+n])
133+
}
134+
return ans
135+
}
84136
```
85137

86138
### **...**

solution/2000-2099/2022.Convert 1D Array Into 2D Array/README_EN.md

+53-1
Original file line numberDiff line numberDiff line change
@@ -68,13 +68,65 @@ It is impossible to make 1 element fill all the spots in a 1x2 2D array, so retu
6868
### **Python3**
6969

7070
```python
71-
71+
class Solution:
72+
def construct2DArray(self, original: List[int], m: int, n: int) -> List[List[int]]:
73+
if m * n != len(original):
74+
return []
75+
return [original[i: i + n] for i in range(0, m * n, n)]
7276
```
7377

7478
### **Java**
7579

7680
```java
81+
class Solution {
82+
public int[][] construct2DArray(int[] original, int m, int n) {
83+
if (m * n != original.length) {
84+
return new int[0][0];
85+
}
86+
int[][] ans = new int[m][n];
87+
for (int i = 0; i < m; ++i) {
88+
for (int j = 0; j < n; ++j) {
89+
ans[i][j] = original[i * n + j];
90+
}
91+
}
92+
return ans;
93+
}
94+
}
95+
```
96+
97+
### **C++**
98+
99+
```cpp
100+
class Solution {
101+
public:
102+
vector<vector<int>> construct2DArray(vector<int>& original, int m, int n) {
103+
if (m * n != original.size()) return {};
104+
vector<vector<int>> ans(m, vector<int>(n, 0));
105+
for (int i = 0; i < m; ++i)
106+
{
107+
for (int j = 0; j < n; ++j)
108+
{
109+
ans[i][j] = original[i * n + j];
110+
}
111+
}
112+
return ans;
113+
}
114+
};
115+
```
77116
117+
### **Go**
118+
119+
```go
120+
func construct2DArray(original []int, m int, n int) [][]int {
121+
if m*n != len(original) {
122+
return [][]int{}
123+
}
124+
var ans [][]int
125+
for i := 0; i < m*n; i += n {
126+
ans = append(ans, original[i:i+n])
127+
}
128+
return ans
129+
}
78130
```
79131

80132
### **...**

0 commit comments

Comments
 (0)