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 a20ac9d

Browse files
Merge branch 'youngyangyang04:master' into master
2 parents 4defb3d + bda7b41 commit a20ac9d

6 files changed

+136
-27
lines changed

‎problems/0300.最长上升子序列.md

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,39 @@ func lengthOfLIS(nums []int ) int {
168168
}
169169
```
170170

171+
```go
172+
// 动态规划求解
173+
func lengthOfLIS(nums []int) int {
174+
// dp数组的定义 dp[i]表示取第i个元素的时候,表示子序列的长度,其中包括 nums[i] 这个元素
175+
dp := make([]int, len(nums))
176+
177+
// 初始化,所有的元素都应该初始化为1
178+
for i := range dp {
179+
dp[i] = 1
180+
}
181+
182+
ans := dp[0]
183+
for i := 1; i < len(nums); i++ {
184+
for j := 0; j < i; j++ {
185+
if nums[i] > nums[j] {
186+
dp[i] = max(dp[i], dp[j] + 1)
187+
}
188+
}
189+
if dp[i] > ans {
190+
ans = dp[i]
191+
}
192+
}
193+
return ans
194+
}
195+
196+
func max(x, y int) int {
197+
if x > y {
198+
return x
199+
}
200+
return y
201+
}
202+
```
203+
171204
Javascript
172205
```javascript
173206
const lengthOfLIS = (nums) => {

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

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,45 @@ class Solution:
236236
```
237237

238238
Go:
239+
> 动态规划:
240+
```go
241+
func findLengthOfLCIS(nums []int) int {
242+
if len(nums) == 0 {return 0}
243+
res, count := 1, 1
244+
for i := 0; i < len(nums)-1; i++ {
245+
if nums[i+1] > nums[i] {
246+
count++
247+
}else {
248+
count = 1
249+
}
250+
if count > res {
251+
res = count
252+
}
253+
}
254+
return res
255+
}
256+
```
257+
258+
> 贪心算法:
259+
```go
260+
func findLengthOfLCIS(nums []int) int {
261+
if len(nums) == 0 {return 0}
262+
dp := make([]int, len(nums))
263+
for i := 0; i < len(dp); i++ {
264+
dp[i] = 1
265+
}
266+
res := 1
267+
for i := 0; i < len(nums)-1; i++ {
268+
if nums[i+1] > nums[i] {
269+
dp[i+1] = dp[i] + 1
270+
}
271+
if dp[i+1] > res {
272+
res = dp[i+1]
273+
}
274+
}
275+
return res
276+
}
277+
```
239278

240279
Javascript:
241280

‎problems/0968.监控二叉树.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -476,7 +476,35 @@ var minCameraCover = function(root) {
476476
};
477477
```
478478

479+
### TypeScript
480+
481+
```typescript
482+
function minCameraCover(root: TreeNode | null): number {
483+
/** 0-无覆盖, 1-有摄像头, 2-有覆盖 */
484+
type statusCode = 0 | 1 | 2;
485+
let resCount: number = 0;
486+
if (recur(root) === 0) resCount++;
487+
return resCount;
488+
function recur(node: TreeNode | null): statusCode {
489+
if (node === null) return 2;
490+
const left: statusCode = recur(node.left),
491+
right: statusCode = recur(node.right);
492+
let resStatus: statusCode = 0;
493+
if (left === 0 || right === 0) {
494+
resStatus = 1;
495+
resCount++;
496+
} else if (left === 1 || right === 1) {
497+
resStatus = 2;
498+
} else {
499+
resStatus = 0;
500+
}
501+
return resStatus;
502+
}
503+
};
504+
```
505+
479506
### C
507+
480508
```c
481509
/*
482510
**函数后序遍历二叉树。判断一个结点状态时,根据其左右孩子结点的状态进行判断

‎problems/二叉树的迭代遍历.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@
1111
1212
看完本篇大家可以使用迭代法,再重新解决如下三道leetcode上的题目:
1313

14-
* 144.二叉树的前序遍历
15-
* 94.二叉树的中序遍历
16-
* 145.二叉树的后序遍历
14+
* [144.二叉树的前序遍历](https://leetcode-cn.com/problems/binary-tree-preorder-traversal/)
15+
* [94.二叉树的中序遍历](https://leetcode-cn.com/problems/binary-tree-inorder-traversal/)
16+
* [145.二叉树的后序遍历](https://leetcode-cn.com/problems/binary-tree-postorder-traversal/)
1717

1818
为什么可以用迭代法(非递归的方式)来实现二叉树的前后中序遍历呢?
1919

‎problems/二叉树的递归遍历.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -99,9 +99,9 @@ void traversal(TreeNode* cur, vector<int>& vec) {
9999

100100
此时大家可以做一做leetcode上三道题目,分别是:
101101

102-
* 144.二叉树的前序遍历
103-
* 145.二叉树的后序遍历
104-
* 94.二叉树的中序遍历
102+
* [144.二叉树的前序遍历](https://leetcode-cn.com/problems/binary-tree-preorder-traversal/)
103+
* [145.二叉树的后序遍历](https://leetcode-cn.com/problems/binary-tree-postorder-traversal/)
104+
* [94.二叉树的中序遍历](https://leetcode-cn.com/problems/binary-tree-inorder-traversal/)
105105

106106
可能有同学感觉前后中序遍历的递归太简单了,要打迭代法(非递归),别急,我们明天打迭代法,打个通透!
107107

‎problems/背包理论基础01背包-1.md

Lines changed: 30 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -380,28 +380,37 @@ func main() {
380380
### javascript
381381

382382
```js
383-
function testweightbagproblem (wight, value, size) {
384-
const len = wight.length,
385-
dp = array.from({length: len + 1}).map(
386-
() => array(size + 1).fill(0)
387-
);
388-
389-
for(let i = 1; i <= len; i++) {
390-
for(let j = 0; j <= size; j++) {
391-
if(wight[i - 1] <= j) {
392-
dp[i][j] = math.max(
393-
dp[i - 1][j],
394-
value[i - 1] + dp[i - 1][j - wight[i - 1]]
395-
)
396-
} else {
397-
dp[i][j] = dp[i - 1][j];
398-
}
399-
}
400-
}
401-
402-
// console.table(dp);
383+
/**
384+
*
385+
* @param {Number []} weight
386+
* @param {Number []} value
387+
* @param {Number} size
388+
* @returns
389+
*/
390+
391+
function testWeightBagProblem(weight, value, size) {
392+
const len = weight.length,
393+
dp = Array.from({length: len}).map(
394+
() => Array(size + 1)) //JavaScript 数组是引用类型
395+
for(let i = 0; i < len; i++) { //初始化最左一列,即背包容量为0时的情况
396+
dp[i][0] = 0;
397+
}
398+
for(let j = 1; j < size+1; j++) { //初始化第0行, 只有一件物品的情况
399+
if(weight[0] <= j) {
400+
dp[0][j] = value[0];
401+
} else {
402+
dp[0][j] = 0;
403+
}
404+
}
405+
406+
for(let i = 1; i < len; i++) { //dp[i][j]由其左上方元素推导得出
407+
for(let j = 1; j < size+1; j++) {
408+
if(j < weight[i]) dp[i][j] = dp[i - 1][j];
409+
else dp[i][j] = Math.max(dp[i-1][j], dp[i-1][j - weight[i]] + value[i]);
410+
}
411+
}
403412

404-
return dp[len][size];
413+
return dp[len-1][size]//满足条件的最大值
405414
}
406415

407416
function testWeightBagProblem2 (wight, value, size) {

0 commit comments

Comments
(0)

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