mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-11 04:54:51 +08:00
Merge branch 'youngyangyang04:master' into master
This commit is contained in:
@ -252,6 +252,24 @@ function numTrees(n: number): number {
|
|||||||
};
|
};
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Rust
|
||||||
|
|
||||||
|
```Rust
|
||||||
|
impl Solution {
|
||||||
|
pub fn num_trees(n: i32) -> i32 {
|
||||||
|
let n = n as usize;
|
||||||
|
let mut dp = vec![0; n + 1];
|
||||||
|
dp[0] = 1;
|
||||||
|
for i in 1..=n {
|
||||||
|
for j in 1..=i {
|
||||||
|
dp[i] += dp[j - 1] * dp[i - j];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
dp[n]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
### C
|
### C
|
||||||
|
|
||||||
```c
|
```c
|
||||||
|
@ -259,6 +259,21 @@ func max(a,b int) int{
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Rust
|
||||||
|
```rust
|
||||||
|
pub fn integer_break(n: i32) -> i32 {
|
||||||
|
let n = n as usize;
|
||||||
|
let mut dp = vec![0; n + 1];
|
||||||
|
dp[2] = 1;
|
||||||
|
for i in 3..=n {
|
||||||
|
for j in 1..i-1 {
|
||||||
|
dp[i] = dp[i].max((i - j) * j).max(dp[i - j] * j);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
dp[n] as i32
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
### Javascript
|
### Javascript
|
||||||
```Javascript
|
```Javascript
|
||||||
var integerBreak = function(n) {
|
var integerBreak = function(n) {
|
||||||
@ -299,6 +314,27 @@ function integerBreak(n: number): number {
|
|||||||
};
|
};
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Rust
|
||||||
|
|
||||||
|
```Rust
|
||||||
|
impl Solution {
|
||||||
|
fn max(a: i32, b: i32) -> i32{
|
||||||
|
if a > b { a } else { b }
|
||||||
|
}
|
||||||
|
pub fn integer_break(n: i32) -> i32 {
|
||||||
|
let n = n as usize;
|
||||||
|
let mut dp = vec![0; n + 1];
|
||||||
|
dp[2] = 1;
|
||||||
|
for i in 3..=n {
|
||||||
|
for j in 1..i - 1 {
|
||||||
|
dp[i] = Self::max(dp[i], Self::max(((i - j) * j) as i32, dp[i - j] * j as i32));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
dp[n]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
### C
|
### C
|
||||||
|
|
||||||
```c
|
```c
|
||||||
|
@ -266,22 +266,58 @@ class Solution:
|
|||||||
|
|
||||||
### Go
|
### Go
|
||||||
|
|
||||||
|
**贪心**
|
||||||
```golang
|
```golang
|
||||||
func wiggleMaxLength(nums []int) int {
|
func wiggleMaxLength(nums []int) int {
|
||||||
var count,preDiff,curDiff int
|
var count, preDiff, curDiff int //初始化默认为0
|
||||||
count=1
|
count = 1 // 初始化为1,因为最小的序列是1个数
|
||||||
if len(nums)<2{
|
if len(nums) < 2 {
|
||||||
return count
|
return count
|
||||||
}
|
}
|
||||||
for i:=0;i<len(nums)-1;i++{
|
for i := 0; i < len(nums)-1; i++ {
|
||||||
curDiff=nums[i+1]-nums[i]
|
curDiff = nums[i+1] - nums[i]
|
||||||
//如果有正有负则更新下标值||或者只有前一个元素为0(针对两个不等元素的序列也视作摆动序列,且摆动长度为2)
|
if (curDiff > 0 && preDiff <= 0) || (curDiff < 0 && preDiff >= 0) {
|
||||||
if (curDiff > 0 && preDiff <= 0) || (preDiff >= 0 && curDiff < 0){
|
count++
|
||||||
preDiff=curDiff
|
}
|
||||||
count++
|
}
|
||||||
}
|
return count
|
||||||
}
|
}
|
||||||
return count
|
```
|
||||||
|
|
||||||
|
**动态规划**
|
||||||
|
```golang
|
||||||
|
func wiggleMaxLength(nums []int) int {
|
||||||
|
n := len(nums)
|
||||||
|
if n <= 1 {
|
||||||
|
return n
|
||||||
|
}
|
||||||
|
dp := make([][2]int, n)
|
||||||
|
// i 0 作为波峰的最大长度
|
||||||
|
// i 1 作为波谷的最大长度
|
||||||
|
dp[0][0] = 1
|
||||||
|
dp[0][1] = 1
|
||||||
|
for i := 0; i < n; i++ {
|
||||||
|
for j := 0; j < i; j++ {
|
||||||
|
if nums[j] > nums[i] { //nums[i]为波谷
|
||||||
|
dp[i][1] = max(dp[i][1], dp[j][0]+1)
|
||||||
|
}
|
||||||
|
if nums[j] < nums[i] { //nums[i]为波峰 或者相等
|
||||||
|
dp[i][0] = max(dp[i][0], dp[j][1]+1)
|
||||||
|
}
|
||||||
|
if nums[j] == nums[i] { //添加一种情况,nums[i]为相等
|
||||||
|
dp[i][0] = max(dp[i][0], dp[j][0]) //波峰
|
||||||
|
dp[i][1] = max(dp[i][1], dp[j][1]) //波谷
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return max(dp[n-1][0], dp[n-1][1])
|
||||||
|
}
|
||||||
|
func max(a, b int) int {
|
||||||
|
if a > b {
|
||||||
|
return a
|
||||||
|
} else {
|
||||||
|
return b
|
||||||
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -221,8 +221,46 @@ function maxProfit(prices: number[], fee: number): number {
|
|||||||
};
|
};
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Rust:
|
||||||
|
**贪心**
|
||||||
|
```Rust
|
||||||
|
impl Solution {
|
||||||
|
pub fn max_profit(prices: Vec<i32>, fee: i32) -> i32 {
|
||||||
|
let mut result = 0;
|
||||||
|
let mut min_price = prices[0];
|
||||||
|
for i in 1..prices.len() {
|
||||||
|
if prices[i] < min_price { min_price = prices[i]; }
|
||||||
|
|
||||||
|
// if prices[i] >= min_price && prices[i] <= min_price + fee { continue; }
|
||||||
|
|
||||||
|
if prices[i] > min_price + fee {
|
||||||
|
result += prices[i] - min_price - fee;
|
||||||
|
min_price = prices[i] - fee;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
result
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**动态规划**
|
||||||
|
```Rust
|
||||||
|
impl Solution {
|
||||||
|
fn max(a: i32, b: i32) -> i32 {
|
||||||
|
if a > b { a } else { b }
|
||||||
|
}
|
||||||
|
pub fn max_profit(prices: Vec<i32>, fee: i32) -> i32 {
|
||||||
|
let n = prices.len();
|
||||||
|
let mut dp = vec![vec![0; 2]; n];
|
||||||
|
dp[0][0] -= prices[0];
|
||||||
|
for i in 1..n {
|
||||||
|
dp[i][0] = Self::max(dp[i - 1][0], dp[i - 1][1] - prices[i]);
|
||||||
|
dp[i][1] = Self::max(dp[i - 1][1], dp[i - 1][0] + prices[i] - fee);
|
||||||
|
}
|
||||||
|
Self::max(dp[n - 1][0], dp[n - 1][1])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
-----------------------
|
-----------------------
|
||||||
<div align="center"><img src=https://code-thinking.cdn.bcebos.com/pics/01二维码一.jpg width=500> </img></div>
|
<div align="center"><img src=https://code-thinking.cdn.bcebos.com/pics/01二维码一.jpg width=500> </img></div>
|
||||||
|
@ -278,5 +278,26 @@ object Solution {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Rust
|
||||||
|
|
||||||
|
```Rust
|
||||||
|
impl Solution {
|
||||||
|
pub fn monotone_increasing_digits(n: i32) -> i32 {
|
||||||
|
let mut str_num = n.to_string().chars().map(|x| x.to_digit(10).unwrap() as i32).collect::<Vec<i32>>();
|
||||||
|
let mut flag = str_num.len();
|
||||||
|
for i in (1..str_num.len()).rev() {
|
||||||
|
if str_num[i - 1] > str_num[i] {
|
||||||
|
flag = i;
|
||||||
|
str_num[i - 1] -= 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for i in flag..str_num.len() {
|
||||||
|
str_num[i] = 9;
|
||||||
|
}
|
||||||
|
str_num.iter().fold(0, |acc, x| acc * 10 + x)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
-----------------------
|
-----------------------
|
||||||
<div align="center"><img src=https://code-thinking.cdn.bcebos.com/pics/01二维码一.jpg width=500> </img></div>
|
<div align="center"><img src=https://code-thinking.cdn.bcebos.com/pics/01二维码一.jpg width=500> </img></div>
|
||||||
|
@ -147,6 +147,59 @@ class Solution {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### java
|
||||||
|
|
||||||
|
```java
|
||||||
|
//方法一:采用额外的数组空间
|
||||||
|
class Solution {
|
||||||
|
public int[] sortArrayByParityII(int[] nums) {
|
||||||
|
//定义结果数组 result
|
||||||
|
int[] result = new int[nums.length];
|
||||||
|
int even = 0, odd = 1;
|
||||||
|
for(int i = 0; i < nums.length; i++){
|
||||||
|
//如果为偶数
|
||||||
|
if(nums[i] % 2 == 0){
|
||||||
|
result[even] = nums[i];
|
||||||
|
even += 2;
|
||||||
|
}else{
|
||||||
|
result[odd] = nums[i];
|
||||||
|
odd += 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
```java
|
||||||
|
//方法二:不采用额外的数组空间
|
||||||
|
class Solution922 {
|
||||||
|
public int[] sortArrayByParityII(int[] nums) {
|
||||||
|
//定义双指针
|
||||||
|
int oddPoint = 1, evenPoint = 0;
|
||||||
|
//开始移动并交换,最后一层必然为相互交换后再移动或者相同直接移动
|
||||||
|
while(oddPoint < nums.length && evenPoint < nums.length){
|
||||||
|
//进行判断
|
||||||
|
if(nums[oddPoint] % 2 == 0 && nums[evenPoint] % 2 == 1){ //如果均不满足
|
||||||
|
int temp = 0;
|
||||||
|
temp = nums[oddPoint];
|
||||||
|
nums[oddPoint] = nums[evenPoint];
|
||||||
|
nums[evenPoint] = temp;
|
||||||
|
oddPoint += 2;
|
||||||
|
evenPoint += 2;
|
||||||
|
}else if(nums[oddPoint] % 2 == 0 && nums[evenPoint] % 2 == 0){ //偶数满足
|
||||||
|
evenPoint += 2;
|
||||||
|
}else if(nums[oddPoint] % 2 == 1 && nums[evenPoint] % 2 == 1){ //奇数满足
|
||||||
|
oddPoint += 2;
|
||||||
|
}else{
|
||||||
|
oddPoint += 2;
|
||||||
|
evenPoint += 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nums;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
### Python3
|
### Python3
|
||||||
|
|
||||||
```python
|
```python
|
||||||
|
Reference in New Issue
Block a user