Skip to content

Commit f7d1c7c

Browse files
authored
Merge branch 'youngyangyang04:master' into master
2 parents 871ae8f + 33dbdff commit f7d1c7c

11 files changed

+153
-14
lines changed

problems/0027.移除元素.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,23 @@ var removeElement = (nums, val) => {
197197
};
198198
```
199199

200+
TypeScript:
201+
202+
```typescript
203+
function removeElement(nums: number[], val: number): number {
204+
let slowIndex: number = 0, fastIndex: number = 0;
205+
while (fastIndex < nums.length) {
206+
if (nums[fastIndex] !== val) {
207+
nums[slowIndex++] = nums[fastIndex];
208+
}
209+
fastIndex++;
210+
}
211+
return slowIndex;
212+
};
213+
```
214+
200215
Ruby:
216+
201217
```ruby
202218
def remove_element(nums, val)
203219
i = 0

problems/0028.实现strStr.md

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -649,6 +649,41 @@ class Solution {
649649
}
650650
```
651651

652+
```Java
653+
class Solution {
654+
//前缀表(不减一)Java实现
655+
public int strStr(String haystack, String needle) {
656+
if (needle.length() == 0) return 0;
657+
int[] next = new int[needle.length()];
658+
getNext(next, needle);
659+
660+
int j = 0;
661+
for (int i = 0; i < haystack.length(); i++) {
662+
while (j > 0 && needle.charAt(j) != haystack.charAt(i))
663+
j = next[j - 1];
664+
if (needle.charAt(j) == haystack.charAt(i))
665+
j++;
666+
if (j == needle.length())
667+
return i - needle.length() + 1;
668+
}
669+
return -1;
670+
671+
}
672+
673+
private void getNext(int[] next, String s) {
674+
int j = 0;
675+
next[0] = 0;
676+
for (int i = 1; i < s.length(); i++) {
677+
while (j > 0 && s.charAt(j) != s.charAt(i))
678+
j = next[j - 1];
679+
if (s.charAt(j) == s.charAt(i))
680+
j++;
681+
next[i] = j;
682+
}
683+
}
684+
}
685+
```
686+
652687
Python3:
653688

654689
```python

problems/0077.组合.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -422,13 +422,13 @@ class Solution:
422422
def backtrack(n,k,startIndex):
423423
if len(path) == k:
424424
res.append(path[:])
425-
return
425+
return
426426
for i in range(startIndex,n - (k - len(path)) + 2): #优化的地方
427427
path.append(i) #处理节点
428428
backtrack(n,k,i+1) #递归
429429
path.pop() #回溯,撤销处理的节点
430-
backtrack(n,k,1)
431-
return res
430+
backtrack(n,k,1)
431+
return res
432432
```
433433

434434

problems/0077.组合优化.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -182,13 +182,13 @@ class Solution:
182182
def backtrack(n,k,startIndex):
183183
if len(path) == k:
184184
res.append(path[:])
185-
return
185+
return
186186
for i in range(startIndex,n-(k-len(path))+2): #优化的地方
187187
path.append(i) #处理节点
188188
backtrack(n,k,i+1) #递归
189189
path.pop() #回溯,撤销处理的节点
190-
backtrack(n,k,1)
191-
return res
190+
backtrack(n,k,1)
191+
return res
192192
```
193193
Go:
194194
```Go

problems/0209.长度最小的子数组.md

Lines changed: 41 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ public:
107107
};
108108
```
109109

110-
时间复杂度:$O(n)$
110+
时间复杂度:$O(n)$
111111
空间复杂度:$O(1)$
112112

113113
**一些录友会疑惑为什么时间复杂度是$O(n)$**
@@ -121,7 +121,6 @@ public:
121121

122122

123123

124-
125124
## 其他语言版本
126125

127126

@@ -214,6 +213,28 @@ var minSubArrayLen = function(target, nums) {
214213
};
215214
```
216215

216+
Typescript:
217+
218+
```typescript
219+
function minSubArrayLen(target: number, nums: number[]): number {
220+
let left: number = 0, right: number = 0;
221+
let res: number = nums.length + 1;
222+
let sum: number = 0;
223+
while (right < nums.length) {
224+
sum += nums[right];
225+
if (sum >= target) {
226+
// 不断移动左指针,直到不能再缩小为止
227+
while (sum - nums[left] >= target) {
228+
sum -= nums[left++];
229+
}
230+
res = Math.min(res, right - left + 1);
231+
}
232+
right++;
233+
}
234+
return res === nums.length + 1 ? 0 : res;
235+
};
236+
```
237+
217238
Swift:
218239

219240
```swift
@@ -291,5 +312,23 @@ class Solution {
291312
}
292313
```
293314

315+
Ruby:
316+
317+
```ruby
318+
def min_sub_array_len(target, nums)
319+
res = Float::INFINITY # 无穷大
320+
i, sum = 0, 0
321+
nums.length.times do |j|
322+
sum += nums[j]
323+
while sum >= target
324+
res = [res, j - i + 1].min
325+
sum -= nums[i]
326+
i += 1
327+
end
328+
end
329+
res == Float::INFINITY ? 0 : res
330+
end
331+
```
332+
294333
-----------------------
295334
<div align="center"><img src=https://code-thinking.cdn.bcebos.com/pics/01二维码一.jpg width=500> </img></div>

problems/0216.组合总和III.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -323,7 +323,6 @@ class Solution:
323323
self.backtracking(k, n, i + 1)
324324
self.path.pop()
325325
self.sum_now -= i
326-
return
327326
```
328327

329328
## Go

problems/0309.最佳买卖股票时机含冷冻期.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ dp[i][3] = dp[i - 1][2];
9393
综上分析,递推代码如下:
9494

9595
```CPP
96-
dp[i][0] = max(dp[i - 1][0], max(dp[i - 1][3], dp[i - 1][1]) - prices[i];
96+
dp[i][0] = max(dp[i - 1][0], max(dp[i - 1][3], dp[i - 1][1]) - prices[i]);
9797
dp[i][1] = max(dp[i - 1][1], dp[i - 1][3]);
9898
dp[i][2] = dp[i - 1][0] + prices[i];
9999
dp[i][3] = dp[i - 1][2];

problems/0347.前K个高频元素.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ class Solution {
142142
143143
Set<Map.Entry<Integer, Integer>> entries = map.entrySet();
144144
// 根据map的value值正序排,相当于一个小顶堆
145-
PriorityQueue<Map.Entry<Integer, Integer>> queue = new PriorityQueue<>((o1, o2) -> o1.getValue() - o2.getValue());
145+
PriorityQueue<Map.Entry<Integer, Integer>> queue = new PriorityQueue<>((o1, o2) -> o2.getValue() - o1.getValue());
146146
for (Map.Entry<Integer, Integer> entry : entries) {
147147
queue.offer(entry);
148148
if (queue.size() > k) {

problems/0674.最长连续递增序列.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,8 @@ public:
154154

155155

156156
Java:
157+
158+
> 动态规划:
157159
```java
158160
/**
159161
* 1.dp[i] 代表当前下标最大连续值
@@ -180,6 +182,25 @@ Java:
180182
}
181183
```
182184
185+
> 贪心法:
186+
187+
```Java
188+
public static int findLengthOfLCIS(int[] nums) {
189+
if (nums.length == 0) return 0;
190+
int res = 1; // 连续子序列最少也是1
191+
int count = 1;
192+
for (int i = 0; i < nums.length - 1; i++) {
193+
if (nums[i + 1] > nums[i]) { // 连续记录
194+
count++;
195+
} else { // 不连续,count从头开始
196+
count = 1;
197+
}
198+
if (count > res) res = count;
199+
}
200+
return res;
201+
}
202+
```
203+
183204
Python:
184205

185206
> 动态规划:

problems/0739.每日温度.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ C++代码如下:
119119
class Solution {
120120
public:
121121
vector<int> dailyTemperatures(vector<int>& T) {
122-
// 递减栈
122+
// 递增栈
123123
stack<int> st;
124124
vector<int> result(T.size(), 0);
125125
st.push(0);
@@ -150,7 +150,7 @@ public:
150150
class Solution {
151151
public:
152152
vector<int> dailyTemperatures(vector<int>& T) {
153-
stack<int> st; // 递减栈
153+
stack<int> st; // 递增栈
154154
vector<int> result(T.size(), 0);
155155
for (int i = 0; i < T.size(); i++) {
156156
while (!st.empty() && T[i] > T[st.top()]) { // 注意栈不能为空
@@ -178,7 +178,7 @@ public:
178178
Java:
179179
```java
180180
/**
181-
* 单调栈,栈内顺序要么从大到小 要么从小到大,本题从大到笑
181+
* 单调栈,栈内顺序要么从大到小 要么从小到大,本题从大到小
182182
* <p>
183183
* 入站元素要和当前栈内栈首元素进行比较
184184
* 若大于栈首则 则与元素下标做差

0 commit comments

Comments
 (0)