Skip to content

Commit fef0d6f

Browse files
authored
feat: add rust solution to lc problem: No.0123 (doocs#1312)
1 parent 7318cb0 commit fef0d6f

File tree

3 files changed

+68
-1
lines changed

3 files changed

+68
-1
lines changed

solution/0100-0199/0123.Best Time to Buy and Sell Stock III/README.md

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@
7070

7171
遍历过程中,直接使用 `f1`, `f2`, `f3`, `f4` 计算,考虑的是在同一天买入和卖出时,收益是 $0$,不会对答案产生影响。
7272

73-
最后返回 `f2` 即可。
73+
最后返回 `f4` 即可。
7474

7575
时间复杂度 $O(n)$,空间复杂度 $O(1)$。其中 $n$ 为数组 `prices` 的长度。
7676

@@ -131,6 +131,30 @@ public:
131131
};
132132
```
133133
134+
### **Rust**
135+
136+
```rust
137+
impl Solution {
138+
#[allow(dead_code)]
139+
pub fn max_profit(prices: Vec<i32>) -> i32 {
140+
let mut f1 = -prices[0];
141+
let mut f2 = 0;
142+
let mut f3 = -prices[0];
143+
let mut f4 = 0;
144+
let n = prices.len();
145+
146+
for i in 1..n {
147+
f1 = std::cmp::max(f1, -prices[i]);
148+
f2 = std::cmp::max(f2, f1 + prices[i]);
149+
f3 = std::cmp::max(f3, f2 - prices[i]);
150+
f4 = std::cmp::max(f4, f3 + prices[i]);
151+
}
152+
153+
f4
154+
}
155+
}
156+
```
157+
134158
### **Go**
135159

136160
```go

solution/0100-0199/0123.Best Time to Buy and Sell Stock III/README_EN.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,30 @@ public:
9797
};
9898
```
9999
100+
### **Rust**
101+
102+
```rust
103+
impl Solution {
104+
#[allow(dead_code)]
105+
pub fn max_profit(prices: Vec<i32>) -> i32 {
106+
let mut f1 = -prices[0];
107+
let mut f2 = 0;
108+
let mut f3 = -prices[0];
109+
let mut f4 = 0;
110+
let n = prices.len();
111+
112+
for i in 1..n {
113+
f1 = std::cmp::max(f1, -prices[i]);
114+
f2 = std::cmp::max(f2, f1 + prices[i]);
115+
f3 = std::cmp::max(f3, f2 - prices[i]);
116+
f4 = std::cmp::max(f4, f3 + prices[i]);
117+
}
118+
119+
f4
120+
}
121+
}
122+
```
123+
100124
### **Go**
101125

102126
```go
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
impl Solution {
2+
#[allow(dead_code)]
3+
pub fn max_profit(prices: Vec<i32>) -> i32 {
4+
let mut f1 = -prices[0];
5+
let mut f2 = 0;
6+
let mut f3 = -prices[0];
7+
let mut f4 = 0;
8+
let n = prices.len();
9+
10+
for i in 1..n {
11+
f1 = std::cmp::max(f1, -prices[i]);
12+
f2 = std::cmp::max(f2, f1 + prices[i]);
13+
f3 = std::cmp::max(f3, f2 - prices[i]);
14+
f4 = std::cmp::max(f4, f3 + prices[i]);
15+
}
16+
17+
f4
18+
}
19+
}

0 commit comments

Comments
 (0)