20240911 finished.
This commit is contained in:
parent
d03c1058c1
commit
d249f777dd
|
@ -232,3 +232,4 @@ mod p3177_find_the_maximum_length_of_a_good_subsequence_ii;
|
||||||
mod p977_squares_of_a_sorted_array;
|
mod p977_squares_of_a_sorted_array;
|
||||||
mod p2181_merge_nodes_in_between_zeros;
|
mod p2181_merge_nodes_in_between_zeros;
|
||||||
mod p2552_count_increasing_quadruplets;
|
mod p2552_count_increasing_quadruplets;
|
||||||
|
mod p2555_maximize_win_from_two_segments;
|
52
src/problem/p2555_maximize_win_from_two_segments.rs
Normal file
52
src/problem/p2555_maximize_win_from_two_segments.rs
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
/**
|
||||||
|
* [2555] Maximize Win From Two Segments
|
||||||
|
*/
|
||||||
|
pub struct Solution {}
|
||||||
|
|
||||||
|
|
||||||
|
// submission codes start here
|
||||||
|
|
||||||
|
impl Solution {
|
||||||
|
pub fn maximize_win(prize_positions: Vec<i32>, k: i32) -> i32 {
|
||||||
|
let n = prize_positions.len();
|
||||||
|
let mut dp = vec![0;n + 1];
|
||||||
|
let mut result = 0;
|
||||||
|
|
||||||
|
for i in 0..n {
|
||||||
|
let j = Self::binary_search(&prize_positions, prize_positions[i] - k);
|
||||||
|
result = result.max(i - j + 1 + dp[j]);
|
||||||
|
|
||||||
|
dp[i + 1] = dp[i].max(i - j + 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
result as i32
|
||||||
|
}
|
||||||
|
|
||||||
|
fn binary_search(array: &Vec<i32>, target: i32) -> usize {
|
||||||
|
let (mut left, mut right) = (0, array.len());
|
||||||
|
|
||||||
|
while left < right {
|
||||||
|
let middle = left + (right - left) / 2;
|
||||||
|
if array[middle] < target {
|
||||||
|
left = middle + 1;
|
||||||
|
} else {
|
||||||
|
right = middle;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
left
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// submission codes end
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_2555() {
|
||||||
|
assert_eq!(7, Solution::maximize_win(vec![1,1,2,2,3,3,5], 2));
|
||||||
|
assert_eq!(2, Solution::maximize_win(vec![1,2,3,4], 0));
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user