mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-08 16:54:50 +08:00
Merge branch 'youngyangyang04:master' into master
This commit is contained in:
@ -168,6 +168,39 @@ func lengthOfLIS(nums []int ) int {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```go
|
||||||
|
// 动态规划求解
|
||||||
|
func lengthOfLIS(nums []int) int {
|
||||||
|
// dp数组的定义 dp[i]表示取第i个元素的时候,表示子序列的长度,其中包括 nums[i] 这个元素
|
||||||
|
dp := make([]int, len(nums))
|
||||||
|
|
||||||
|
// 初始化,所有的元素都应该初始化为1
|
||||||
|
for i := range dp {
|
||||||
|
dp[i] = 1
|
||||||
|
}
|
||||||
|
|
||||||
|
ans := dp[0]
|
||||||
|
for i := 1; i < len(nums); i++ {
|
||||||
|
for j := 0; j < i; j++ {
|
||||||
|
if nums[i] > nums[j] {
|
||||||
|
dp[i] = max(dp[i], dp[j] + 1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if dp[i] > ans {
|
||||||
|
ans = dp[i]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ans
|
||||||
|
}
|
||||||
|
|
||||||
|
func max(x, y int) int {
|
||||||
|
if x > y {
|
||||||
|
return x
|
||||||
|
}
|
||||||
|
return y
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
Javascript
|
Javascript
|
||||||
```javascript
|
```javascript
|
||||||
const lengthOfLIS = (nums) => {
|
const lengthOfLIS = (nums) => {
|
||||||
|
@ -236,6 +236,45 @@ class Solution:
|
|||||||
```
|
```
|
||||||
|
|
||||||
Go:
|
Go:
|
||||||
|
> 动态规划:
|
||||||
|
```go
|
||||||
|
func findLengthOfLCIS(nums []int) int {
|
||||||
|
if len(nums) == 0 {return 0}
|
||||||
|
res, count := 1, 1
|
||||||
|
for i := 0; i < len(nums)-1; i++ {
|
||||||
|
if nums[i+1] > nums[i] {
|
||||||
|
count++
|
||||||
|
}else {
|
||||||
|
count = 1
|
||||||
|
}
|
||||||
|
if count > res {
|
||||||
|
res = count
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
> 贪心算法:
|
||||||
|
```go
|
||||||
|
func findLengthOfLCIS(nums []int) int {
|
||||||
|
if len(nums) == 0 {return 0}
|
||||||
|
dp := make([]int, len(nums))
|
||||||
|
for i := 0; i < len(dp); i++ {
|
||||||
|
dp[i] = 1
|
||||||
|
}
|
||||||
|
res := 1
|
||||||
|
for i := 0; i < len(nums)-1; i++ {
|
||||||
|
if nums[i+1] > nums[i] {
|
||||||
|
dp[i+1] = dp[i] + 1
|
||||||
|
}
|
||||||
|
if dp[i+1] > res {
|
||||||
|
res = dp[i+1]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
Javascript:
|
Javascript:
|
||||||
|
|
||||||
|
@ -476,7 +476,35 @@ var minCameraCover = function(root) {
|
|||||||
};
|
};
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### TypeScript
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
function minCameraCover(root: TreeNode | null): number {
|
||||||
|
/** 0-无覆盖, 1-有摄像头, 2-有覆盖 */
|
||||||
|
type statusCode = 0 | 1 | 2;
|
||||||
|
let resCount: number = 0;
|
||||||
|
if (recur(root) === 0) resCount++;
|
||||||
|
return resCount;
|
||||||
|
function recur(node: TreeNode | null): statusCode {
|
||||||
|
if (node === null) return 2;
|
||||||
|
const left: statusCode = recur(node.left),
|
||||||
|
right: statusCode = recur(node.right);
|
||||||
|
let resStatus: statusCode = 0;
|
||||||
|
if (left === 0 || right === 0) {
|
||||||
|
resStatus = 1;
|
||||||
|
resCount++;
|
||||||
|
} else if (left === 1 || right === 1) {
|
||||||
|
resStatus = 2;
|
||||||
|
} else {
|
||||||
|
resStatus = 0;
|
||||||
|
}
|
||||||
|
return resStatus;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
### C
|
### C
|
||||||
|
|
||||||
```c
|
```c
|
||||||
/*
|
/*
|
||||||
**函数后序遍历二叉树。判断一个结点状态时,根据其左右孩子结点的状态进行判断
|
**函数后序遍历二叉树。判断一个结点状态时,根据其左右孩子结点的状态进行判断
|
||||||
|
@ -11,9 +11,9 @@
|
|||||||
|
|
||||||
看完本篇大家可以使用迭代法,再重新解决如下三道leetcode上的题目:
|
看完本篇大家可以使用迭代法,再重新解决如下三道leetcode上的题目:
|
||||||
|
|
||||||
* 144.二叉树的前序遍历
|
* [144.二叉树的前序遍历](https://leetcode-cn.com/problems/binary-tree-preorder-traversal/)
|
||||||
* 94.二叉树的中序遍历
|
* [94.二叉树的中序遍历](https://leetcode-cn.com/problems/binary-tree-inorder-traversal/)
|
||||||
* 145.二叉树的后序遍历
|
* [145.二叉树的后序遍历](https://leetcode-cn.com/problems/binary-tree-postorder-traversal/)
|
||||||
|
|
||||||
为什么可以用迭代法(非递归的方式)来实现二叉树的前后中序遍历呢?
|
为什么可以用迭代法(非递归的方式)来实现二叉树的前后中序遍历呢?
|
||||||
|
|
||||||
|
@ -99,9 +99,9 @@ void traversal(TreeNode* cur, vector<int>& vec) {
|
|||||||
|
|
||||||
此时大家可以做一做leetcode上三道题目,分别是:
|
此时大家可以做一做leetcode上三道题目,分别是:
|
||||||
|
|
||||||
* 144.二叉树的前序遍历
|
* [144.二叉树的前序遍历](https://leetcode-cn.com/problems/binary-tree-preorder-traversal/)
|
||||||
* 145.二叉树的后序遍历
|
* [145.二叉树的后序遍历](https://leetcode-cn.com/problems/binary-tree-postorder-traversal/)
|
||||||
* 94.二叉树的中序遍历
|
* [94.二叉树的中序遍历](https://leetcode-cn.com/problems/binary-tree-inorder-traversal/)
|
||||||
|
|
||||||
可能有同学感觉前后中序遍历的递归太简单了,要打迭代法(非递归),别急,我们明天打迭代法,打个通透!
|
可能有同学感觉前后中序遍历的递归太简单了,要打迭代法(非递归),别急,我们明天打迭代法,打个通透!
|
||||||
|
|
||||||
|
@ -380,28 +380,37 @@ func main() {
|
|||||||
### javascript
|
### javascript
|
||||||
|
|
||||||
```js
|
```js
|
||||||
function testweightbagproblem (wight, value, size) {
|
/**
|
||||||
const len = wight.length,
|
*
|
||||||
dp = array.from({length: len + 1}).map(
|
* @param {Number []} weight
|
||||||
() => array(size + 1).fill(0)
|
* @param {Number []} value
|
||||||
);
|
* @param {Number} size
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
|
|
||||||
for(let i = 1; i <= len; i++) {
|
function testWeightBagProblem(weight, value, size) {
|
||||||
for(let j = 0; j <= size; j++) {
|
const len = weight.length,
|
||||||
if(wight[i - 1] <= j) {
|
dp = Array.from({length: len}).map(
|
||||||
dp[i][j] = math.max(
|
() => Array(size + 1)) //JavaScript 数组是引用类型
|
||||||
dp[i - 1][j],
|
for(let i = 0; i < len; i++) { //初始化最左一列,即背包容量为0时的情况
|
||||||
value[i - 1] + dp[i - 1][j - wight[i - 1]]
|
dp[i][0] = 0;
|
||||||
)
|
}
|
||||||
} else {
|
for(let j = 1; j < size+1; j++) { //初始化第0行, 只有一件物品的情况
|
||||||
dp[i][j] = dp[i - 1][j];
|
if(weight[0] <= j) {
|
||||||
}
|
dp[0][j] = value[0];
|
||||||
}
|
} else {
|
||||||
}
|
dp[0][j] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// console.table(dp);
|
for(let i = 1; i < len; i++) { //dp[i][j]由其左上方元素推导得出
|
||||||
|
for(let j = 1; j < size+1; j++) {
|
||||||
|
if(j < weight[i]) dp[i][j] = dp[i - 1][j];
|
||||||
|
else dp[i][j] = Math.max(dp[i-1][j], dp[i-1][j - weight[i]] + value[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return dp[len][size];
|
return dp[len-1][size] //满足条件的最大值
|
||||||
}
|
}
|
||||||
|
|
||||||
function testWeightBagProblem2 (wight, value, size) {
|
function testWeightBagProblem2 (wight, value, size) {
|
||||||
|
Reference in New Issue
Block a user