Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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‎

Lines changed: 71 additions & 2 deletions
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‎

Lines changed: 69 additions & 2 deletions
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
### **...**
Lines changed: 11 additions & 0 deletions
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+
};
Lines changed: 26 additions & 0 deletions
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+
}
Lines changed: 13 additions & 0 deletions
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+
}
Lines changed: 10 additions & 0 deletions
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‎

Lines changed: 53 additions & 1 deletion
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‎

Lines changed: 53 additions & 1 deletion
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)

AltStyle によって変換されたページ (->オリジナル) /