From 702b016368f124ec5f3822a5033747871bff29cd Mon Sep 17 00:00:00 2001 From: li-chx Date: Thu, 27 Nov 2025 08:49:45 +0800 Subject: [PATCH] =?UTF-8?q?3381.=20=E9=95=BF=E5=BA=A6=E5=8F=AF=E8=A2=AB=20?= =?UTF-8?q?K=20=E6=95=B4=E9=99=A4=E7=9A=84=E5=AD=90=E6=95=B0=E7=BB=84?= =?UTF-8?q?=E7=9A=84=E6=9C=80=E5=A4=A7=E5=85=83=E7=B4=A0=E5=92=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main.rs | 37 +++++++++++++++++-------------------- 1 file changed, 17 insertions(+), 20 deletions(-) diff --git a/src/main.rs b/src/main.rs index ed1f9dd..95ba5e1 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,30 +1,27 @@ -use crate::arr::make_matrix; +use std::cmp::max; struct Solution; mod arr; impl Solution { - pub fn number_of_paths(grid: Vec>, k: i32) -> i32 { - let mut arr = vec![vec![vec![0; k as usize]; grid[0].len()]; grid.len()]; - let r#mod = 1e9 as i32 + 7; - arr[0][0][(grid[0][0] % k) as usize] = 1; - for i in 0..grid.len() { - for j in 0..grid[i].len() { - if i < grid.len() - 1 { - for l in 0..k { - arr[i + 1][j][((l + grid[i + 1][j]) % k) as usize] = (arr[i + 1][j][((l + grid[i + 1][j]) % k) as usize] + arr[i][j][l as usize]) % r#mod; - } - } - if j < grid[0].len() - 1 { - for l in 0..k { - arr[i][j + 1][((l + grid[i][j + 1]) % k) as usize] = (arr[i][j + 1][((l + grid[i][j + 1]) % k) as usize] + arr[i][j][l as usize]) % r#mod; - } - } - } + pub fn max_subarray_sum(nums: Vec, k: i32) -> i64 { + let mut temp = 0_i64; + let k = k as usize; + let mut dp = vec![0_i64; nums.len()]; + let mut ans = 0_i64; + for i in 0..k { + temp += nums[i] as i64; } - arr[grid.len() - 1][grid[0].len() - 1][0] + dp[k - 1] = temp; + ans = temp; + for i in k..nums.len() { + temp = temp + (nums[i] - nums[i - k]) as i64; + dp[i] = temp + if dp[i-k] > 0 { dp[i-k] } else { 0 }; + ans = max(ans,dp[i]); + } + ans } } fn main() { - let result = Solution::number_of_paths(make_matrix("[[5,2,4],[3,0,5],[0,7,2]]"), 3); + let result = Solution::max_subarray_sum(vec![-5,1,2,-3,4],2); println!("{:?}", result); }