diff --git a/solution/3600-3699/3652.Best Time to Buy and Sell Stock using Strategy/README.md b/solution/3600-3699/3652.Best Time to Buy and Sell Stock using Strategy/README.md index 34cfa9c9ffd37..578d0927346ae 100644 --- a/solution/3600-3699/3652.Best Time to Buy and Sell Stock using Strategy/README.md +++ b/solution/3600-3699/3652.Best Time to Buy and Sell Stock using Strategy/README.md @@ -279,6 +279,66 @@ function maxProfit(prices: number[], strategy: number[], k: number): number { } ``` +#### Rust + +```rust +impl Solution { + pub fn max_profit(prices: Vec, strategy: Vec, k: i32) -> i64 { + let n: usize = prices.len(); + let k: usize = k as usize; + + let mut s: Vec = vec![0; n + 1]; + let mut t: Vec = vec![0; n + 1]; + + for i in 1..=n { + let a: i64 = prices[i - 1] as i64; + let b: i64 = strategy[i - 1] as i64; + s[i] = s[i - 1] + a * b; + t[i] = t[i - 1] + a; + } + + let mut ans: i64 = s[n]; + for i in k..=n { + let cur = s[n] - (s[i] - s[i - k]) + (t[i] - t[i - k / 2]); + if cur > ans { + ans = cur; + } + } + + ans + } +} +``` + +#### C# + +```cs +public class Solution { + public long MaxProfit(int[] prices, int[] strategy, int k) { + int n = prices.Length; + long[] s = new long[n + 1]; + long[] t = new long[n + 1]; + + for (int i = 1; i <= n; i++) { + long a = prices[i - 1]; + long b = strategy[i - 1]; + s[i] = s[i - 1] + a * b; + t[i] = t[i - 1] + a; + } + + long ans = s[n]; + for (int i = k; i <= n; i++) { + long cur = s[n] - (s[i] - s[i - k]) + (t[i] - t[i - k / 2]); + if (cur > ans) { + ans = cur; + } + } + + return ans; + } +} +``` + diff --git a/solution/3600-3699/3652.Best Time to Buy and Sell Stock using Strategy/README_EN.md b/solution/3600-3699/3652.Best Time to Buy and Sell Stock using Strategy/README_EN.md index bc312371e6785..32c1932966b93 100644 --- a/solution/3600-3699/3652.Best Time to Buy and Sell Stock using Strategy/README_EN.md +++ b/solution/3600-3699/3652.Best Time to Buy and Sell Stock using Strategy/README_EN.md @@ -277,6 +277,66 @@ function maxProfit(prices: number[], strategy: number[], k: number): number { } ``` +#### Rust + +```rust +impl Solution { + pub fn max_profit(prices: Vec, strategy: Vec, k: i32) -> i64 { + let n: usize = prices.len(); + let k: usize = k as usize; + + let mut s: Vec = vec![0; n + 1]; + let mut t: Vec = vec![0; n + 1]; + + for i in 1..=n { + let a: i64 = prices[i - 1] as i64; + let b: i64 = strategy[i - 1] as i64; + s[i] = s[i - 1] + a * b; + t[i] = t[i - 1] + a; + } + + let mut ans: i64 = s[n]; + for i in k..=n { + let cur = s[n] - (s[i] - s[i - k]) + (t[i] - t[i - k / 2]); + if cur > ans { + ans = cur; + } + } + + ans + } +} +``` + +#### C# + +```cs +public class Solution { + public long MaxProfit(int[] prices, int[] strategy, int k) { + int n = prices.Length; + long[] s = new long[n + 1]; + long[] t = new long[n + 1]; + + for (int i = 1; i <= n; i++) { + long a = prices[i - 1]; + long b = strategy[i - 1]; + s[i] = s[i - 1] + a * b; + t[i] = t[i - 1] + a; + } + + long ans = s[n]; + for (int i = k; i <= n; i++) { + long cur = s[n] - (s[i] - s[i - k]) + (t[i] - t[i - k / 2]); + if (cur > ans) { + ans = cur; + } + } + + return ans; + } +} +``` + diff --git a/solution/3600-3699/3652.Best Time to Buy and Sell Stock using Strategy/Solution.cs b/solution/3600-3699/3652.Best Time to Buy and Sell Stock using Strategy/Solution.cs new file mode 100644 index 0000000000000..2c5c1b79e810a --- /dev/null +++ b/solution/3600-3699/3652.Best Time to Buy and Sell Stock using Strategy/Solution.cs @@ -0,0 +1,24 @@ +public class Solution { + public long MaxProfit(int[] prices, int[] strategy, int k) { + int n = prices.Length; + long[] s = new long[n + 1]; + long[] t = new long[n + 1]; + + for (int i = 1; i <= n; i++) { + long a = prices[i - 1]; + long b = strategy[i - 1]; + s[i] = s[i - 1] + a * b; + t[i] = t[i - 1] + a; + } + + long ans = s[n]; + for (int i = k; i <= n; i++) { + long cur = s[n] - (s[i] - s[i - k]) + (t[i] - t[i - k / 2]); + if (cur > ans) { + ans = cur; + } + } + + return ans; + } +} diff --git a/solution/3600-3699/3652.Best Time to Buy and Sell Stock using Strategy/Solution.rs b/solution/3600-3699/3652.Best Time to Buy and Sell Stock using Strategy/Solution.rs new file mode 100644 index 0000000000000..f02384a721441 --- /dev/null +++ b/solution/3600-3699/3652.Best Time to Buy and Sell Stock using Strategy/Solution.rs @@ -0,0 +1,26 @@ +impl Solution { + pub fn max_profit(prices: Vec, strategy: Vec, k: i32) -> i64 { + let n: usize = prices.len(); + let k: usize = k as usize; + + let mut s: Vec = vec![0; n + 1]; + let mut t: Vec = vec![0; n + 1]; + + for i in 1..=n { + let a: i64 = prices[i - 1] as i64; + let b: i64 = strategy[i - 1] as i64; + s[i] = s[i - 1] + a * b; + t[i] = t[i - 1] + a; + } + + let mut ans: i64 = s[n]; + for i in k..=n { + let cur = s[n] - (s[i] - s[i - k]) + (t[i] - t[i - k / 2]); + if cur > ans { + ans = cur; + } + } + + ans + } +}