mirror of
https://github.com/krahets/hello-algo.git
synced 2026-08-20 07:21:02 +00:00
Migrate to Zensical (#1869)
* Fix Russian Ruby code extraction. * Add zensical configs.
This commit is contained in:
@@ -4,7 +4,7 @@ Created Time: 2024-04-09
|
||||
Author: Blue Bean (lonnnnnnner@gmail.com)
|
||||
=end
|
||||
|
||||
# ## Бинарный поиск (двусторонне замкнутый интервал) ###
|
||||
### Бинарный поиск (двусторонне замкнутый интервал) ###
|
||||
def binary_search(nums, target)
|
||||
# Инициализировать двусторонне замкнутый интервал [0, n-1], то есть i и j указывают на первый и последний элементы массива соответственно
|
||||
i, j = 0, nums.length - 1
|
||||
@@ -26,7 +26,7 @@ def binary_search(nums, target)
|
||||
-1 # Целевой элемент не найден, вернуть -1
|
||||
end
|
||||
|
||||
# ## Бинарный поиск (лево замкнутый, право открытый интервал) ###
|
||||
### Бинарный поиск (лево замкнутый, право открытый интервал) ###
|
||||
def binary_search_lcro(nums, target)
|
||||
# Инициализировать лево замкнутый, право открытый интервал [0, n), то есть i и j указывают на первый элемент массива и позицию сразу за последним элементом соответственно
|
||||
i, j = 0, nums.length
|
||||
|
||||
@@ -6,7 +6,7 @@ Author: Blue Bean (lonnnnnnner@gmail.com)
|
||||
|
||||
require_relative './binary_search_insertion'
|
||||
|
||||
# ## Бинарный поиск самого левого target ###
|
||||
### Бинарный поиск самого левого target ###
|
||||
def binary_search_left_edge(nums, target)
|
||||
# Эквивалентно поиску точки вставки target
|
||||
i = binary_search_insertion(nums, target)
|
||||
@@ -17,7 +17,7 @@ def binary_search_left_edge(nums, target)
|
||||
i # Найти target и вернуть индекс i
|
||||
end
|
||||
|
||||
# ## Бинарный поиск самого правого target ###
|
||||
### Бинарный поиск самого правого target ###
|
||||
def binary_search_right_edge(nums, target)
|
||||
# Преобразовать задачу в поиск самого левого target + 1
|
||||
i = binary_search_insertion(nums, target + 1)
|
||||
|
||||
@@ -4,7 +4,7 @@ Created Time: 2024-04-09
|
||||
Author: Blue Bean (lonnnnnnner@gmail.com)
|
||||
=end
|
||||
|
||||
# ## Бинарный поиск точки вставки (без повторяющихся элементов) ###
|
||||
### Бинарный поиск точки вставки (без повторяющихся элементов) ###
|
||||
def binary_search_insertion_simple(nums, target)
|
||||
# Инициализировать двусторонне замкнутый интервал [0, n-1]
|
||||
i, j = 0, nums.length - 1
|
||||
@@ -25,7 +25,7 @@ def binary_search_insertion_simple(nums, target)
|
||||
i # target не найден, вернуть точку вставки i
|
||||
end
|
||||
|
||||
# ## Бинарный поиск точки вставки (с повторяющимися элементами) ###
|
||||
### Бинарный поиск точки вставки (с повторяющимися элементами) ###
|
||||
def binary_search_insertion(nums, target)
|
||||
# Инициализировать двусторонне замкнутый интервал [0, n-1]
|
||||
i, j = 0, nums.length - 1
|
||||
|
||||
@@ -6,14 +6,14 @@ Author: Blue Bean (lonnnnnnner@gmail.com)
|
||||
|
||||
require_relative '../utils/list_node'
|
||||
|
||||
# ## Хеш-поиск (массив) ###
|
||||
### Хеш-поиск (массив) ###
|
||||
def hashing_search_array(hmap, target)
|
||||
# key хеш-таблицы: целевой элемент, value: индекс
|
||||
# Если такого key нет в хеш-таблице, вернуть -1
|
||||
hmap[target] || -1
|
||||
end
|
||||
|
||||
# ## Хеш-поиск (связный список) ###
|
||||
### Хеш-поиск (связный список) ###
|
||||
def hashing_search_linkedlist(hmap, target)
|
||||
# key хеш-таблицы: целевой элемент, value: объект узла
|
||||
# Если такого key нет в хеш-таблице, вернуть None
|
||||
|
||||
@@ -6,7 +6,7 @@ Author: Blue Bean (lonnnnnnner@gmail.com)
|
||||
|
||||
require_relative '../utils/list_node'
|
||||
|
||||
# ## Линейный поиск (массив) ###
|
||||
### Линейный поиск (массив) ###
|
||||
def linear_search_array(nums, target)
|
||||
# Обход массива
|
||||
for i in 0...nums.length
|
||||
@@ -16,7 +16,7 @@ def linear_search_array(nums, target)
|
||||
-1 # Целевой элемент не найден, вернуть -1
|
||||
end
|
||||
|
||||
# ## Линейный поиск (связный список) ###
|
||||
### Линейный поиск (связный список) ###
|
||||
def linear_search_linkedlist(head, target)
|
||||
# Обойти связный список
|
||||
while head
|
||||
|
||||
@@ -4,7 +4,7 @@ Created Time: 2024-04-09
|
||||
Author: Blue Bean (lonnnnnnner@gmail.com)
|
||||
=end
|
||||
|
||||
# ## Метод 1: полный перебор ###
|
||||
### Метод 1: полный перебор ###
|
||||
def two_sum_brute_force(nums, target)
|
||||
# Два вложенных цикла, временная сложность O(n^2)
|
||||
for i in 0...(nums.length - 1)
|
||||
@@ -16,7 +16,7 @@ def two_sum_brute_force(nums, target)
|
||||
[]
|
||||
end
|
||||
|
||||
# ## Метод 2: вспомогательная хеш-таблица ###
|
||||
### Метод 2: вспомогательная хеш-таблица ###
|
||||
def two_sum_hash_table(nums, target)
|
||||
# Вспомогательная хеш-таблица, пространственная сложность O(n)
|
||||
dic = {}
|
||||
|
||||
Reference in New Issue
Block a user