172 похожих чатов

Привет всем. Изучаю раст в данный момент (сам пишу на другом

языке сейчас), поэтому будет джуновский вопрос.
Решаю задачки на кодеварс и столкнулся с такой.
На вход даётся массив с последовательностью цифр от 1 и т.д. по порядку.
Нужно написать функцию, которая бы могла найти пропуск, то есть массив [1, 2, 3, 4, 5, 7], есть пропуск и нужно вернуть 7, а если пропуска нет, то None.

Вот мой код, который не работает из-за несовпадения типов, может кто подсказать как пофиксить?

fn first_non_consecutive(vec: &Vec<i32>) -> Option<i32> {
for i in 1..vec.len()-1 {
if vec.iter().nth(i+1).unwrap() - vec.iter().nth(i).unwrap() != 1 {
return vec.iter().nth(i+1);
} else { return None; };
};
}

11 ответов

23 просмотра

.iter().nth(i).unwrap() можно на [i] поменять

Denis- Автор вопроса

fn first_non_consecutive(vec: &Vec<i32>) -> Option<i32> { for i in 0..vec.len()-1 { if vec.get(i+1).unwrap() - vec.get(i).unwrap() != 1 { return vec.get(i+1).copied(); }; }; return None; } Вот так по итогу сделал. Спасибо!

если тебе не нужны проверки, есть ли элемент, то можно чуть переделать fn first_non_consecutive(vec: &Vec<i32>) -> Option<i32> { for i in 0..vec.len()-1 { if vec[i + 1] - vec[i] != 1 { return *vec[i]; } } return None; }

Denis
fn first_non_consecutive(vec: &Vec<i32>) -> Option...

vec.iter().windows(2).find(|w| w[0] != w[1]).map(|w| w[1])

fn first_non_consecutive(arr: &Vec<i32>) -> Option<i32> { arr.windows(2).find_map(|w| { let prev = w[0]; let next = w[1]; if prev + 1 != next { Some(next) } else { None } }) }

Ramtaic Natcher
bool::then

О, спасибо, не знал

Макс
fn first_non_consecutive(arr: &Vec<i32>) -> Option...

А зачем переменные ставить?

Ramtaic Natcher
А зачем переменные ставить?

Это я для читаемости первую вынес, а вторую просто чтобы два раза не обращаться

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта