Есть решение с O(1) для памяти. Просто в один проход сканируешь строку: до первого определяешь на какой позиции находится нужная колонка, на последующих строках выделяешь нужное значение при помощи подсчета запятых
Не могу воспринимать С++, поэтому сварганил быстренько на java решение, получилось 5 минут + тест) все ли верно в нем? Integer solution(String input, String request) { var map = new HashMap(); var lines = input.split(" "); var header = lines[0].split(","); for (var column : header) { map.put(column, new ArrayList()); } for (int i = 1; i < lines.length; i++) { var columns = lines[i].split(","); for (int j = 0; j < columns.length; j++) { if (j >= header.length) { throw new IllegalArgumentException("Invalid input string"); } String key = header[j]; if (map.get(key) != null) { map.get(key).add(columns[j]); } else { throw new IllegalArgumentException("Invalid input string"); } } } var targetList = map.get(request); var result = Integer.MIN_VALUE; for (var value : targetList) { try { var parsedValue = Integer.parseInt(value); result = Math.max(result, parsedValue); } catch (Exception e) { throw new NumberFormatException(String.format("Can't parse %s to integer", value)); } } return result; }
Вопрос небольшой. Скажите пожалуйста в практике структуры данных используются для хранения и работы с данными в оперативной памяти? Или они ещё используются для хранения данных на носителях? Спасибо
Здравствуйте, Кирилл. На практике могут использоваться самые разные варианты, зачастую конечно же мы говорит о структурах данных, которые хранятся исключительно только в оперативной памяти компьютера. Это самый частый предмет разговора, однако иногда встречаются структуры с возможностью их сериализации/десериализации для сохранения данных на диск либо же передачи данных по сети. Рекомендую почитать информацию по следующим ключевым словам: сериализации, десериализации, RPC фреймворки и особенности транспорта пользовательских структур/классов.
@@itdog спасибо большое! С плюсами знаком давно, ещё с 90-х, тогда же кодил, но не в продакшне, а в научной области, гуи писал немного под мфс, а щас вот изучаю новый вариант плюсов и пытаюсь малость автоматизировать ту область, в которой работаю… а опыта в продакшне нет. Ваши видео просматриваю как раз в большей части практического применения языка… было бы неплохо практику применения тех или иных структур и паттернов проектирования…
Есть решение с O(1) для памяти. Просто в один проход сканируешь строку: до первого
определяешь на какой позиции находится нужная колонка, на последующих строках выделяешь нужное значение при помощи подсчета запятых
Не могу воспринимать С++, поэтому сварганил быстренько на java решение, получилось 5 минут + тест) все ли верно в нем?
Integer solution(String input, String request) {
var map = new HashMap();
var lines = input.split("
");
var header = lines[0].split(",");
for (var column : header) {
map.put(column, new ArrayList());
}
for (int i = 1; i < lines.length; i++) {
var columns = lines[i].split(",");
for (int j = 0; j < columns.length; j++) {
if (j >= header.length) {
throw new IllegalArgumentException("Invalid input string");
}
String key = header[j];
if (map.get(key) != null) {
map.get(key).add(columns[j]);
} else {
throw new IllegalArgumentException("Invalid input string");
}
}
}
var targetList = map.get(request);
var result = Integer.MIN_VALUE;
for (var value : targetList) {
try {
var parsedValue = Integer.parseInt(value);
result = Math.max(result, parsedValue);
} catch (Exception e) {
throw new NumberFormatException(String.format("Can't parse %s to integer", value));
}
}
return result;
}
у меня на курсах такое задание было ток мы сортировали данные по столбцу
Вопрос небольшой. Скажите пожалуйста в практике структуры данных используются для хранения и работы с данными в оперативной памяти? Или они ещё используются для хранения данных на носителях? Спасибо
Здравствуйте, Кирилл. На практике могут использоваться самые разные варианты, зачастую конечно же мы говорит о структурах данных, которые хранятся исключительно только в оперативной памяти компьютера. Это самый частый предмет разговора, однако иногда встречаются структуры с возможностью их сериализации/десериализации для сохранения данных на диск либо же передачи данных по сети. Рекомендую почитать информацию по следующим ключевым словам: сериализации, десериализации, RPC фреймворки и особенности транспорта пользовательских структур/классов.
@@itdog спасибо большое! С плюсами знаком давно, ещё с 90-х, тогда же кодил, но не в продакшне, а в научной области, гуи писал немного под мфс, а щас вот изучаю новый вариант плюсов и пытаюсь малость автоматизировать ту область, в которой работаю… а опыта в продакшне нет. Ваши видео просматриваю как раз в большей части практического применения языка… было бы неплохо практику применения тех или иных структур и паттернов проектирования…
а что если строка битая, тоисть количество значений в строке не соответсвтует размеру других строк?
ничего страшного, если будет расхождение по количеству элементов в строках. Целевое значение может быть простой не найдено. Падения не будет.