Skip to content

Commit 5f033d3

Browse files
committedOct 6, 2022
feat: add solutions to lc problem: No.1708
No.1708.Largest Subarray Length K
1 parent 32a7d0f commit 5f033d3

File tree

6 files changed

+138
-2
lines changed

6 files changed

+138
-2
lines changed
 

‎solution/1700-1799/1708.Largest Subarray Length K/README.md

+53-1
Original file line numberDiff line numberDiff line change
@@ -58,22 +58,74 @@
5858

5959
<!-- 这里可写通用的实现逻辑 -->
6060

61+
**方法一:模拟**
62+
63+
数组中所有整数都不同,我们可以先在 $[0,..n-k]$ 范围内找到最大的元素的下标,然后从该下标开始取 $k$ 个元素即可。
64+
65+
时间复杂度 $O(n)$,忽略答案的空间消耗,空间复杂度 $O(1)$。其中 $n$ 为数组的长度。
66+
6167
<!-- tabs:start -->
6268

6369
### **Python3**
6470

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

6773
```python
68-
74+
class Solution:
75+
def largestSubarray(self, nums: List[int], k: int) -> List[int]:
76+
mx = max(nums[: len(nums) - k + 1])
77+
i = nums.index(mx)
78+
return nums[i: i + k]
6979
```
7080

7181
### **Java**
7282

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

7585
```java
86+
class Solution {
87+
public int[] largestSubarray(int[] nums, int k) {
88+
int i = 0, mx = 0;
89+
for (int j = 0; j < nums.length - k + 1; ++j) {
90+
if (mx < nums[j]) {
91+
mx = nums[j];
92+
i = j;
93+
}
94+
}
95+
int[] ans = new int[k];
96+
for (int j = 0; j < k; ++j) {
97+
ans[j] = nums[i + j];
98+
}
99+
return ans;
100+
}
101+
}
102+
```
103+
104+
### **C++**
105+
106+
```cpp
107+
class Solution {
108+
public:
109+
vector<int> largestSubarray(vector<int>& nums, int k) {
110+
auto pos = max_element(nums.begin(), nums.begin() + nums.size() - k + 1);
111+
return {pos, pos + k};
112+
}
113+
};
114+
```
76115
116+
### **Go**
117+
118+
```go
119+
func largestSubarray(nums []int, k int) []int {
120+
i, mx := 0, 0
121+
for j := 0; j < len(nums)-k+1; j++ {
122+
if mx < nums[j] {
123+
mx = nums[j]
124+
i = j
125+
}
126+
}
127+
return nums[i : i+k]
128+
}
77129
```
78130

79131
### **...**

‎solution/1700-1799/1708.Largest Subarray Length K/README_EN.md

+47-1
Original file line numberDiff line numberDiff line change
@@ -60,13 +60,59 @@ Of these, [4,5,2,3] is the largest.</pre>
6060
### **Python3**
6161

6262
```python
63-
63+
class Solution:
64+
def largestSubarray(self, nums: List[int], k: int) -> List[int]:
65+
mx = max(nums[: len(nums) - k + 1])
66+
i = nums.index(mx)
67+
return nums[i: i + k]
6468
```
6569

6670
### **Java**
6771

6872
```java
73+
class Solution {
74+
public int[] largestSubarray(int[] nums, int k) {
75+
int i = 0, mx = 0;
76+
for (int j = 0; j < nums.length - k + 1; ++j) {
77+
if (mx < nums[j]) {
78+
mx = nums[j];
79+
i = j;
80+
}
81+
}
82+
int[] ans = new int[k];
83+
for (int j = 0; j < k; ++j) {
84+
ans[j] = nums[i + j];
85+
}
86+
return ans;
87+
}
88+
}
89+
```
90+
91+
### **C++**
92+
93+
```cpp
94+
class Solution {
95+
public:
96+
vector<int> largestSubarray(vector<int>& nums, int k) {
97+
auto pos = max_element(nums.begin(), nums.begin() + nums.size() - k + 1);
98+
return {pos, pos + k};
99+
}
100+
};
101+
```
69102
103+
### **Go**
104+
105+
```go
106+
func largestSubarray(nums []int, k int) []int {
107+
i, mx := 0, 0
108+
for j := 0; j < len(nums)-k+1; j++ {
109+
if mx < nums[j] {
110+
mx = nums[j]
111+
i = j
112+
}
113+
}
114+
return nums[i : i+k]
115+
}
70116
```
71117

72118
### **...**
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
class Solution {
2+
public:
3+
vector<int> largestSubarray(vector<int>& nums, int k) {
4+
auto pos = max_element(nums.begin(), nums.begin() + nums.size() - k + 1);
5+
return {pos, pos + k};
6+
}
7+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
func largestSubarray(nums []int, k int) []int {
2+
i, mx := 0, 0
3+
for j := 0; j < len(nums)-k+1; j++ {
4+
if mx < nums[j] {
5+
mx = nums[j]
6+
i = j
7+
}
8+
}
9+
return nums[i : i+k]
10+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
class Solution {
2+
public int[] largestSubarray(int[] nums, int k) {
3+
int i = 0, mx = 0;
4+
for (int j = 0; j < nums.length - k + 1; ++j) {
5+
if (mx < nums[j]) {
6+
mx = nums[j];
7+
i = j;
8+
}
9+
}
10+
int[] ans = new int[k];
11+
for (int j = 0; j < k; ++j) {
12+
ans[j] = nums[i + j];
13+
}
14+
return ans;
15+
}
16+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
class Solution:
2+
def largestSubarray(self, nums: List[int], k: int) -> List[int]:
3+
mx = max(nums[: len(nums) - k + 1])
4+
i = nums.index(mx)
5+
return nums[i: i + k]

0 commit comments

Comments
 (0)
Please sign in to comment.