Серия «LeetCode»

1

LeetCode 125. Valid Palindrome

Очередная задачка уровня Easy, но с довольно низким показателем Acceptance (44.4%). Что выражается в достаточно обширном наборе граничных случаев, некоторые из которых делают больно 🙂

Было желание сделать за один проход по исходной строке (без выделения дополнительно памяти). Вроде даже получилось, если ориентироваться на статистику запуска с LeetCode.

Надоело бороться с "Цитатой" в бесплодных попытках использовать её для оформления кода, которое можно был бы читать без самовоспламенения пердячей тяги. Поэтому тут будет пикча, в нормальном виде - в оригинале.

LeetCode 125. Valid Palindrome

Success: Runtime:2 ms, faster than 99.92% of Java online submissions. Memory Usage:42.3 MB, less than 87.41% of Java online submissions.

Показать полностью 1
1

LeetCode 1935. Maximum Number of Words You Can Type

Тоже забавная задачка – со “сломанной клавиатурой”. Решил в ней Arrays.binarySearch использовать для поиска буквы слова в наборе “сломанных клавишей”, да и чтобы не забыть о его (метода) существовании в целом.

Судя по статистике – нормально получилось, в общем-то.

class Solution {

public int canBeTypedWords(String text, String brokenLetters) {

var brL = brokenLetters.toCharArray();

Arrays.sort(brL);

var words = text.split(" ");

int canTypeCnt = 0;

for (var word : words) {

boolean canType = true;

for (int i = 0; i < word.length(); i++) {

if (Arrays.binarySearch(brL, word.charAt(i)) >= 0) {

canType = false;

break;

}

}

if (canType) {

canTypeCnt++;

}

}

return canTypeCnt;

}

}

Success:

Runtime:2 ms, faster than 91.93% of Java online submissions.

Memory Usage:42.7 MB, less than 23.23% of Java online submissions.

Оригинал.

Показать полностью
2

LeetCode 13. Roman to Integer

Приятная задачка выпала в поиске – хоть и easy, а сделать интересно. Какая-то “практическая применимость” в ней видится.

Вроде, там где-то и обратная проблема была – перевод записи арабскими цифрами в запись римскими.

В общем-то, список валидных префиксов там прямо в условии задачи описан, особо выдумывать тут ничего не требуется.

LeetCode 13. Roman to Integer

Можно ещё вариант со switch-case сделать, но там с валидацией порядка цифр в записи будут вопросы. Реализация со словарём префиксов их снимает автоматом.

Оригинал.

Показать полностью

Leetcode 1920. Build Array from Permutation

После долгих праздничных выходных — приходится «разогревать» голову задачками с высоким Acceptance. И даже они — не сразу заходят. Со скрипом.


class Solution { public static int[] buildArray(int[] nums) { int[] ans = new int[nums.length]; for (int i = 0; i < nums.length; i++) { ans[i] = nums[nums[i]]; } return ans; } }


https://leetcode.com/problems/build-array-from-permutation/d...

Leetcode 1360. Number of Days Between Two Dates

Да, с серединки Acceptance начинается интересное уже. Процентов от 65 даже, и в сторону убывания.
Сомневаюсь, конечно, что в секции алгоритмических задач предполагался подобный подход… На это намекает и весьма нескромное время выполнения — 9ms.
Но оно работает. Для начала — уже недурно.


import java.time.Duration;
import java.time.LocalDate;

class Solution {
public int daysBetweenDates(String date1, String date2) {
return date1.equals(date2)
? 0
: Math.abs((int) Duration.between(
LocalDate.parse(date1).atStartOfDay(),
LocalDate.parse(date2).atStartOfDay()
).toDays());
}
}

https://leetcode.com/problems/number-of-days-between-two-dat...

Leetcode 1929. Concatenation of Array

В процессе потения над Advent of Code понял, что надо алгосы держать в тонусе — иначе задачи даются тяжко.
Рецепт давно известен — Литкод. Успел там челлендж на первый уровень алгосов пройти и решил, что неплохо бы посохранять это всё где-то. Почему бы не здесь?
Начнём с простого, даже — примитивного. Не особо понял, при чем тут объединение массивов, скорее — генерация какая-то.


class Solution {
public static int[] getConcatenation(int[] nums) {
int[] ans = new int[nums.length * 2];
for (int i = 0; i < nums.length; i++) {
ans[i] = ans[i + nums.length] = nums[i];
}
return ans;
}
}


https://leetcode.com/problems/concatenation-of-array/descrip...

Отличная работа, все прочитано!