algorithmz/array/
max_ones_index.rs1pub fn max_ones_index(list: &[i32]) -> Result<i32, String> {
22 if list.is_empty() {
23 return Err("Cannot use max ones on an empty list!".to_string());
24 }
25 if !list.iter().all(|&x| x == 0 || x == 1) {
26 return Err("The list may only contain 1-s and 0-s!".to_string());
27 }
28 let length = list.len();
29 let mut max_count: i32 = 0;
30 let mut max_index: i32 = 0;
31 let mut prev_zero: i32 = -1;
32 let mut prev_prev_zero: i32 = -1;
33 for current in 0..length {
34 if list[current] == 0 {
35 if current as i32 - prev_prev_zero > max_count {
36 max_count = current as i32 - prev_prev_zero;
37 max_index = prev_zero;
38 }
39 prev_prev_zero = prev_zero;
40 prev_zero = current as i32;
41 }
42 }
43 if length as i32 - prev_prev_zero > max_count {
44 max_index = prev_zero;
45 }
46 Ok(max_index)
47}
48
49