Skip to content

Commit c88843d

Browse files
authoredMay 11, 2021
Merge pull request #29 from jtr109/develop
Develop
2 parents 5ae7243 + 41af11d commit c88843d

File tree

4 files changed

+73
-0
lines changed

4 files changed

+73
-0
lines changed
 

‎Cargo.lock

+4
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,5 @@ members = [
2121
"delete_operation_for_two_strings",
2222
"construct_target_array_with_multiple_sums",
2323
"count_primes",
24+
"maximum_points_you_can_obtain_from_cards",
2425
]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
[package]
2+
name = "maximum_points_you_can_obtain_from_cards"
3+
version = "0.1.0"
4+
authors = ["Ryan Li <conbas2019@gmail.com>"]
5+
edition = "2018"
6+
7+
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
8+
9+
[dependencies]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
pub struct Solution {}
2+
3+
impl Solution {
4+
pub fn max_score(card_points: Vec<i32>, k: i32) -> i32 {
5+
let k = k as usize;
6+
let window_length = card_points.len() - k;
7+
let mut current: i32 = card_points[window_length..].iter().sum();
8+
let max = current;
9+
(0..k).fold(max, |acc, i| {
10+
current += card_points[i] - card_points[i + window_length];
11+
acc.max(current)
12+
})
13+
}
14+
}
15+
16+
#[cfg(test)]
17+
mod tests {
18+
use super::*;
19+
20+
#[test]
21+
fn example_1() {
22+
let card_points = vec![1, 2, 3, 4, 5, 6, 1];
23+
let k = 3;
24+
let expected = 12;
25+
assert_eq!(Solution::max_score(card_points, k), expected);
26+
}
27+
28+
#[test]
29+
fn example_2() {
30+
let card_points = vec![2, 2, 2];
31+
let k = 2;
32+
let expected = 4;
33+
assert_eq!(Solution::max_score(card_points, k), expected);
34+
}
35+
36+
#[test]
37+
fn example_3() {
38+
let card_points = vec![9, 7, 7, 9, 7, 7, 9];
39+
let k = 7;
40+
let expected = 55;
41+
assert_eq!(Solution::max_score(card_points, k), expected);
42+
}
43+
44+
#[test]
45+
fn example_4() {
46+
let card_points = vec![1, 1000, 1];
47+
let k = 1;
48+
let expected = 1;
49+
assert_eq!(Solution::max_score(card_points, k), expected);
50+
}
51+
52+
#[test]
53+
fn example_5() {
54+
let card_points = vec![1, 79, 80, 1, 1, 1, 200, 1];
55+
let k = 3;
56+
let expected = 202;
57+
assert_eq!(Solution::max_score(card_points, k), expected);
58+
}
59+
}

0 commit comments

Comments
 (0)