mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-09 11:34:46 +08:00
Merge pull request #1274 from wangAlpha/master
添加 0053.最大子序和、0135分发糖果和0455分发饼干的 Rust版本
This commit is contained in:
@ -212,6 +212,20 @@ func maxSubArray(nums []int) int {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Rust
|
||||||
|
```rust
|
||||||
|
pub fn max_sub_array(nums: Vec<i32>) -> i32 {
|
||||||
|
let mut max_sum = i32::MIN;
|
||||||
|
let mut curr = 0;
|
||||||
|
for n in nums.iter() {
|
||||||
|
curr += n;
|
||||||
|
max_sum = max_sum.max(curr);
|
||||||
|
curr = curr.max(0);
|
||||||
|
}
|
||||||
|
max_sum
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
### Javascript:
|
### Javascript:
|
||||||
```Javascript
|
```Javascript
|
||||||
var maxSubArray = function(nums) {
|
var maxSubArray = function(nums) {
|
||||||
|
@ -213,6 +213,25 @@ func findMax(num1 int ,num2 int) int{
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Rust
|
||||||
|
```rust
|
||||||
|
pub fn candy(ratings: Vec<i32>) -> i32 {
|
||||||
|
let mut candies = vec![1i32; ratings.len()];
|
||||||
|
for i in 1..ratings.len() {
|
||||||
|
if ratings[i - 1] < ratings[i] {
|
||||||
|
candies[i] = candies[i - 1] + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for i in (0..ratings.len()-1).rev() {
|
||||||
|
if ratings[i] > ratings[i + 1] {
|
||||||
|
candies[i] = candies[i].max(candies[i + 1] + 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
candies.iter().sum()
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
### Javascript:
|
### Javascript:
|
||||||
```Javascript
|
```Javascript
|
||||||
var candy = function(ratings) {
|
var candy = function(ratings) {
|
||||||
|
@ -201,6 +201,23 @@ func max(x, y int) int {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Rust:
|
||||||
|
```rust
|
||||||
|
pub fn length_of_lis(nums: Vec<i32>) -> i32 {
|
||||||
|
let mut dp = vec![1; nums.len() + 1];
|
||||||
|
let mut result = 1;
|
||||||
|
for i in 1..nums.len() {
|
||||||
|
for j in 0..i {
|
||||||
|
if nums[j] < nums[i] {
|
||||||
|
dp[i] = dp[i].max(dp[j] + 1);
|
||||||
|
}
|
||||||
|
result = result.max(dp[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
result
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
Javascript
|
Javascript
|
||||||
```javascript
|
```javascript
|
||||||
const lengthOfLIS = (nums) => {
|
const lengthOfLIS = (nums) => {
|
||||||
|
@ -302,6 +302,24 @@ func min(a, b int) int {
|
|||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Rust:
|
||||||
|
|
||||||
|
```rust
|
||||||
|
pub fn coin_change(coins: Vec<i32>, amount: i32) -> i32 {
|
||||||
|
let amount = amount as usize;
|
||||||
|
let mut dp = vec![i32::MAX; amount + 1];
|
||||||
|
dp[0] = 0;
|
||||||
|
for i in 0..coins.len() {
|
||||||
|
for j in coins[i] as usize..=amount {
|
||||||
|
if dp[j - coins[i] as usize] != i32::MAX {
|
||||||
|
dp[j] = dp[j].min(dp[j - coins[i] as usize] + 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if dp[amount] == i32::MAX { -1 } else { dp[amount] }
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
Javascript:
|
Javascript:
|
||||||
```javascript
|
```javascript
|
||||||
const coinChange = (coins, amount) => {
|
const coinChange = (coins, amount) => {
|
||||||
|
@ -191,6 +191,26 @@ func findContentChildren(g []int, s []int) int {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Rust
|
||||||
|
```rust
|
||||||
|
pub fn find_content_children(children: Vec<i32>, cookie: Vec<i32>) -> i32 {
|
||||||
|
let mut children = children;
|
||||||
|
let mut cookies = cookie;
|
||||||
|
children.sort();
|
||||||
|
cookies.sort();
|
||||||
|
|
||||||
|
let (mut child, mut cookie) = (0usize, 0usize);
|
||||||
|
while child < children.len() && cookie < cookies.len() {
|
||||||
|
// 优先选择最小饼干喂饱孩子
|
||||||
|
if children[child] <= cookies[cookie] {
|
||||||
|
child += 1;
|
||||||
|
}
|
||||||
|
cookie += 1
|
||||||
|
}
|
||||||
|
child as i32
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
### Javascript
|
### Javascript
|
||||||
```js
|
```js
|
||||||
var findContentChildren = function(g, s) {
|
var findContentChildren = function(g, s) {
|
||||||
|
@ -242,6 +242,22 @@ func change(amount int, coins []int) int {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Rust:
|
||||||
|
```rust
|
||||||
|
pub fn change(amount: i32, coins: Vec<i32>) -> i32 {
|
||||||
|
let amount = amount as usize;
|
||||||
|
let coins = coins.iter().map(|&c|c as usize).collect::<Vec<usize>>();
|
||||||
|
let mut dp = vec![0usize; amount + 1];
|
||||||
|
dp[0] = 1;
|
||||||
|
for i in 0..coins.len() {
|
||||||
|
for j in coins[i]..=amount {
|
||||||
|
dp[j] += dp[j - coins[i]];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
dp[amount] as i32
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
Javascript:
|
Javascript:
|
||||||
```javascript
|
```javascript
|
||||||
const change = (amount, coins) => {
|
const change = (amount, coins) => {
|
||||||
|
@ -218,6 +218,7 @@ class Solution:
|
|||||||
return result
|
return result
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
> 贪心法:
|
> 贪心法:
|
||||||
```python
|
```python
|
||||||
class Solution:
|
class Solution:
|
||||||
@ -276,6 +277,24 @@ func findLengthOfLCIS(nums []int) int {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Rust:
|
||||||
|
```rust
|
||||||
|
pub fn find_length_of_lcis(nums: Vec<i32>) -> i32 {
|
||||||
|
if nums.is_empty() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
let mut result = 1;
|
||||||
|
let mut dp = vec![1; nums.len()];
|
||||||
|
for i in 1..nums.len() {
|
||||||
|
if nums[i - 1] < nums[i] {
|
||||||
|
dp[i] = dp[i - 1] + 1;
|
||||||
|
result = result.max(dp[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
result
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
Javascript:
|
Javascript:
|
||||||
|
|
||||||
> 动态规划:
|
> 动态规划:
|
||||||
|
@ -111,7 +111,6 @@ class Solution:
|
|||||||
Golang:
|
Golang:
|
||||||
|
|
||||||
```go
|
```go
|
||||||
|
|
||||||
func maxUncrossedLines(A []int, B []int) int {
|
func maxUncrossedLines(A []int, B []int) int {
|
||||||
m, n := len(A), len(B)
|
m, n := len(A), len(B)
|
||||||
dp := make([][]int, m+1)
|
dp := make([][]int, m+1)
|
||||||
@ -140,7 +139,26 @@ func max(a, b int) int {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Rust:
|
||||||
|
|
||||||
|
```rust
|
||||||
|
pub fn max_uncrossed_lines(nums1: Vec<i32>, nums2: Vec<i32>) -> i32 {
|
||||||
|
let (n, m) = (nums1.len(), nums2.len());
|
||||||
|
let mut last = vec![0; m + 1]; // 记录滚动数组
|
||||||
|
let mut dp = vec![0; m + 1];
|
||||||
|
for i in 1..=n {
|
||||||
|
dp.swap_with_slice(&mut last);
|
||||||
|
for j in 1..=m {
|
||||||
|
if nums1[i - 1] == nums2[j - 1] {
|
||||||
|
dp[j] = last[j - 1] + 1;
|
||||||
|
} else {
|
||||||
|
dp[j] = last[j].max(dp[j - 1]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
dp[m]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
JavaScript:
|
JavaScript:
|
||||||
|
|
||||||
|
@ -193,6 +193,28 @@ func max(a,b int)int {
|
|||||||
}
|
}
|
||||||
return b
|
return b
|
||||||
}
|
}
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
Rust:
|
||||||
|
```rust
|
||||||
|
pub fn longest_common_subsequence(text1: String, text2: String) -> i32 {
|
||||||
|
let (n, m) = (text1.len(), text2.len());
|
||||||
|
let (s1, s2) = (text1.as_bytes(), text2.as_bytes());
|
||||||
|
let mut dp = vec![0; m + 1];
|
||||||
|
let mut last = vec![0; m + 1];
|
||||||
|
for i in 1..=n {
|
||||||
|
dp.swap_with_slice(&mut last);
|
||||||
|
for j in 1..=m {
|
||||||
|
dp[j] = if s1[i - 1] == s2[j - 1] {
|
||||||
|
last[j - 1] + 1
|
||||||
|
} else {
|
||||||
|
last[j].max(dp[j - 1])
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
dp[m]
|
||||||
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
Javascript:
|
Javascript:
|
||||||
|
Reference in New Issue
Block a user