Resetting the repo, preserving old data
This commit is contained in:
parent
6e36b869c2
commit
8ada2330d5
63 changed files with 3 additions and 6333 deletions
1
archive/27.12.2024
Submodule
1
archive/27.12.2024
Submodule
|
@ -0,0 +1 @@
|
|||
Subproject commit 6e36b869c21a448c0fcdcfe7e154c8e6ea336756
|
2
archive/README.md
Normal file
2
archive/README.md
Normal file
|
@ -0,0 +1,2 @@
|
|||
# Archive
|
||||
Made for resetting repository and move all previously solved tasks here.
|
|
@ -1,51 +0,0 @@
|
|||
// Binary Search in C
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
int binarySearch(int array[], int x, int low, int high)
|
||||
/**
|
||||
* Binary search implementation.
|
||||
* int array[] - sorted array of INT to search for
|
||||
* x - INT value for searching
|
||||
* low - initial search starting index
|
||||
* high - initial last array index
|
||||
*/
|
||||
{
|
||||
// Repeat until the pointers low and high meet each other
|
||||
while (low <= high)
|
||||
{
|
||||
// Calculating mid position of an array
|
||||
int mid = low + (high - low) / 2;
|
||||
|
||||
// If value of center object == value to search for
|
||||
if (array[mid] == x)
|
||||
// Return it
|
||||
return mid;
|
||||
|
||||
// If mid value is less than value to search for
|
||||
if (array[mid] < x)
|
||||
// Move low border to the right
|
||||
low = mid + 1;
|
||||
|
||||
// If mid value is greater than value to search for
|
||||
else
|
||||
// Move high border to mid-1 position
|
||||
high = mid - 1;
|
||||
}
|
||||
|
||||
// If no value found - return -1
|
||||
return -1;
|
||||
}
|
||||
|
||||
int main(void)
|
||||
{
|
||||
int array[] = {3, 4, 5, 6, 7, 8, 9};
|
||||
int n = sizeof(array) / sizeof(array[0]);
|
||||
int x = 8;
|
||||
int result = binarySearch(array, x, 0, n - 1);
|
||||
if (result == -1)
|
||||
printf("Not found");
|
||||
else
|
||||
printf("Element is found at index %d", result);
|
||||
return 0;
|
||||
}
|
|
@ -1,33 +0,0 @@
|
|||
// Binary Search in C
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
int binarySearch(int array[], int x, int low, int high) {
|
||||
if (high >= low) {
|
||||
int mid = low + (high - low) / 2;
|
||||
|
||||
// If found at mid, then return it
|
||||
if (array[mid] == x)
|
||||
return mid;
|
||||
|
||||
// Search the left half
|
||||
if (array[mid] > x)
|
||||
return binarySearch(array, x, low, mid - 1);
|
||||
|
||||
// Search the right half
|
||||
return binarySearch(array, x, mid + 1, high);
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
int main(void) {
|
||||
int array[] = {3, 4, 5, 6, 7, 8, 9};
|
||||
int n = sizeof(array) / sizeof(array[0]);
|
||||
int x = 4;
|
||||
int result = binarySearch(array, x, 0, n - 1);
|
||||
if (result == -1)
|
||||
printf("Not found");
|
||||
else
|
||||
printf("Element is found at index %d", result);
|
||||
}
|
|
@ -1,31 +0,0 @@
|
|||
# Binary Search in python
|
||||
|
||||
|
||||
def binarySearch(array, x, low, high):
|
||||
|
||||
# Repeat until the pointers low and high meet each other
|
||||
while low <= high:
|
||||
|
||||
mid = low + (high - low)//2
|
||||
|
||||
if array[mid] == x:
|
||||
return mid
|
||||
|
||||
elif array[mid] < x:
|
||||
low = mid + 1
|
||||
|
||||
else:
|
||||
high = mid - 1
|
||||
|
||||
return -1
|
||||
|
||||
|
||||
array = [3, 4, 5, 6, 7, 8, 9]
|
||||
x = 4
|
||||
|
||||
result = binarySearch(array, x, 0, len(array)-1)
|
||||
|
||||
if result != -1:
|
||||
print("Element is present at index " + str(result))
|
||||
else:
|
||||
print("Not found")
|
|
@ -1,34 +0,0 @@
|
|||
# Binary Search in python
|
||||
|
||||
|
||||
def binarySearch(array, x, low, high):
|
||||
|
||||
if high >= low:
|
||||
|
||||
mid = low + (high - low)//2
|
||||
|
||||
# If found at mid, then return it
|
||||
if array[mid] == x:
|
||||
return mid
|
||||
|
||||
# Search the left half
|
||||
elif array[mid] > x:
|
||||
return binarySearch(array, x, low, mid-1)
|
||||
|
||||
# Search the right half
|
||||
else:
|
||||
return binarySearch(array, x, mid + 1, high)
|
||||
|
||||
else:
|
||||
return -1
|
||||
|
||||
|
||||
array = [3, 4, 5, 6, 7, 8, 9]
|
||||
x = 4
|
||||
|
||||
result = binarySearch(array, x, 0, len(array)-1)
|
||||
|
||||
if result != -1:
|
||||
print("Element is present at index " + str(result))
|
||||
else:
|
||||
print("Not found")
|
|
@ -1,55 +0,0 @@
|
|||
from typing import List, Optional
|
||||
|
||||
|
||||
# Task 4.1: Write a code with recursion for calculating summ of all array entries
|
||||
def calculate_recursion_summ(array_of_ints: List[int]) -> int:
|
||||
if len(array_of_ints) == 0:
|
||||
return 0
|
||||
return array_of_ints[0] + calculate_recursion_summ(array_of_ints[1:])
|
||||
|
||||
|
||||
print(calculate_recursion_summ([5, 5, 5, 5, 5]))
|
||||
|
||||
|
||||
# Task 4.2: Write a code with recursion for calculating the amount of elements in List
|
||||
def calculate_list_length(array_of_ints: List[int]) -> int:
|
||||
if len(array_of_ints) == 1:
|
||||
return 1
|
||||
return 1 + calculate_list_length(array_of_ints[1:])
|
||||
|
||||
|
||||
print(calculate_list_length([1, 2, 3, 4, 5, 6, 7, 8]))
|
||||
|
||||
|
||||
# Task 4.3: Write a code to find a highest list value with recursion
|
||||
def find_highest_value_in_lits(array_of_ints: List[int]) -> int:
|
||||
if len(array_of_ints) == 1:
|
||||
return array_of_ints[0]
|
||||
elif len(array_of_ints) == 2:
|
||||
return (
|
||||
array_of_ints[0]
|
||||
if array_of_ints[0] > array_of_ints[1]
|
||||
else array_of_ints[1]
|
||||
)
|
||||
else:
|
||||
sub_max = find_highest_value_in_lits(array_of_ints[1:])
|
||||
return array_of_ints[0] if array_of_ints[0] > sub_max else sub_max
|
||||
|
||||
|
||||
print(find_highest_value_in_lits([1, 2, 3, 4, 5, 4, 3, 2, 1, 1231]))
|
||||
|
||||
|
||||
# Task 4.4: Make binary search using recursion
|
||||
def binary_search(array_of_ints: List[int], target_value: int) -> Optional[int]:
|
||||
array_len = len(array_of_ints)
|
||||
if array_len == 1:
|
||||
return array_of_ints[0] if array_of_ints[0] == target_value else None
|
||||
max_left = array_of_ints[array_len // 2]
|
||||
return (
|
||||
binary_search(array_of_ints[: array_len // 2], target_value)
|
||||
if target_value < max_left
|
||||
else binary_search(array_of_ints[array_len // 2:], target_value)
|
||||
)
|
||||
|
||||
|
||||
print(binary_search([1, 2, 3, 4, 5], 4))
|
|
@ -1,50 +0,0 @@
|
|||
from collections import deque
|
||||
|
||||
|
||||
# Dummy function to check that person is selling mangos
|
||||
def person_is_seller(name: str) -> bool:
|
||||
# If last person letter is "m" than he is mango seller
|
||||
return name[-1] == "m"
|
||||
|
||||
|
||||
# Implementation of BFS of example graph
|
||||
def bfs():
|
||||
# Modeling graph using hash map
|
||||
graph = {}
|
||||
graph["me"] = ["alice", "bob", "claire"]
|
||||
graph["bob"] = ["anuj", "peggy"]
|
||||
graph["alice"] = ["peggy"]
|
||||
graph["claire"] = ["tom", "jonny"]
|
||||
graph["anuj"] = []
|
||||
graph["peggy"] = []
|
||||
graph["tom"] = []
|
||||
graph["jonny"] = []
|
||||
|
||||
# Creating queue for checking
|
||||
search_queue = deque()
|
||||
|
||||
# Declaring searched persons list for avoiding infinite loop situation
|
||||
searched = []
|
||||
|
||||
# Adding first people to queue, starting from me
|
||||
search_queue += graph["me"]
|
||||
|
||||
# Start searching
|
||||
while search_queue:
|
||||
# Getting first person from queue
|
||||
person = search_queue.popleft()
|
||||
# Checking that person is already searched
|
||||
if person not in searched:
|
||||
if person_is_seller(person):
|
||||
print("{name} is a mago seller!".format(name=person))
|
||||
return
|
||||
else:
|
||||
# Adding new neighbours to queue
|
||||
search_queue += graph[person]
|
||||
# Add current searched person to searched list
|
||||
searched.append(person)
|
||||
print("No mango sellers in your friends list :(")
|
||||
return False
|
||||
|
||||
|
||||
bfs()
|
|
@ -1,11 +0,0 @@
|
|||
```mermaid
|
||||
flowchart TB
|
||||
A(me) --> B(alice)
|
||||
A --> C(bob)
|
||||
A --> D(claire)
|
||||
B --> P(peggy)
|
||||
C --> P
|
||||
C --> AN(anuj)
|
||||
D --> T(tom)
|
||||
D --> J(jonny)
|
||||
```
|
|
@ -1,130 +0,0 @@
|
|||
# First - initializing the graph
|
||||
graph = {}
|
||||
|
||||
# Put first element in graph
|
||||
graph["start"] = {}
|
||||
graph["start"]["a"] = 6
|
||||
graph["start"]["b"] = 2
|
||||
|
||||
# Put A element in graph
|
||||
graph["a"] = {}
|
||||
graph["a"]["fin"] = 1
|
||||
|
||||
# Put B element in graph
|
||||
graph["b"] = {}
|
||||
graph["b"]["fin"] = 5
|
||||
graph["b"]["a"] = 3
|
||||
|
||||
# Put last element in graph
|
||||
graph["fin"] = {}
|
||||
|
||||
# Now we need to declare "costs" hash table
|
||||
# Costs table shows how much time needed to reach to this node from the starting node
|
||||
|
||||
# Settings up infinity value
|
||||
infinity = float("inf")
|
||||
|
||||
# initializing "costs" hash-table
|
||||
costs = {}
|
||||
costs["a"] = 6
|
||||
costs["b"] = 2
|
||||
costs["fin"] = infinity
|
||||
|
||||
# We also needed "parents" hash-table
|
||||
parents = {}
|
||||
parents["a"] = "start"
|
||||
parents["b"] = "start"
|
||||
parents["fin"] = None
|
||||
|
||||
# ------- Notebook graph example -------
|
||||
|
||||
graph_notebook = {}
|
||||
|
||||
graph_notebook["a"] = {}
|
||||
graph_notebook["a"]["b"] = 1
|
||||
graph_notebook["a"]["d"] = 10
|
||||
|
||||
graph_notebook["b"] = {}
|
||||
graph_notebook["b"]["c"] = 2
|
||||
|
||||
graph_notebook["c"] = {}
|
||||
graph_notebook["c"]["d"] = 3
|
||||
graph_notebook["c"]["e"] = 15
|
||||
|
||||
graph_notebook["d"] = {}
|
||||
graph_notebook["d"]["e"] = 1
|
||||
|
||||
graph_notebook["e"] = {}
|
||||
|
||||
costs_notebook = {}
|
||||
costs_notebook["b"] = 1
|
||||
costs_notebook["d"] = 10
|
||||
costs_notebook["c"] = infinity
|
||||
costs_notebook["e"] = infinity
|
||||
|
||||
# We also needed "parents" hash-table
|
||||
parents_notebook = {}
|
||||
parents_notebook["b"] = "a"
|
||||
parents_notebook["d"] = "a"
|
||||
parents_notebook["c"] = None
|
||||
parents_notebook["e"] = None
|
||||
|
||||
|
||||
def dijkstra_algo(graph, costs, parents):
|
||||
# We need to store processed nodes list
|
||||
processed = []
|
||||
|
||||
# First we need to define function for finding the lowest cost node to process it
|
||||
def find_lowest_cost_node(costs):
|
||||
lowest_cost = float("inf")
|
||||
lowest_cost_node = None
|
||||
for node in costs:
|
||||
cost = costs[node]
|
||||
if cost < lowest_cost and node not in processed:
|
||||
lowest_cost = cost
|
||||
lowest_cost_node = node
|
||||
return lowest_cost_node
|
||||
|
||||
# And now we initiate the algorithm
|
||||
node = find_lowest_cost_node(costs)
|
||||
step = 1
|
||||
while node is not None:
|
||||
print(f"Step {step}")
|
||||
print(f"Current data:\nParents: {parents}\nCosts: {costs}\n\n")
|
||||
print(f"current lowest node: {node}. Start to inspect it")
|
||||
cost = costs[node]
|
||||
neighbors = graph[node]
|
||||
print(f"Cost of node {node} = {cost}")
|
||||
print(f"Neighbors of node {node} = {neighbors}")
|
||||
for n in neighbors.keys():
|
||||
print(f" Processing neighbor {n}")
|
||||
new_cost = cost + neighbors[n]
|
||||
print(f" New calculated cost for neighbor {n} = {new_cost}")
|
||||
if costs[n] > new_cost:
|
||||
print(
|
||||
f" New calculated cost {new_cost} is lower than old node cost {costs[n]} so we replace it with new value and new parent {node}"
|
||||
)
|
||||
costs[n] = new_cost
|
||||
parents[n] = node
|
||||
print(
|
||||
f" New costs table:\n {costs}\n New parents table:\n {parents}"
|
||||
)
|
||||
else:
|
||||
print(
|
||||
f" New calculated cost {new_cost} is greater than old node cost {costs[n]} so we do not touching costs and parents table"
|
||||
)
|
||||
print(f" Costs table:\n {costs}\n Parents table:\n {parents}")
|
||||
print(
|
||||
f"Work with node {node} is finished, so we marking it with processed label"
|
||||
)
|
||||
processed.append(node)
|
||||
node = find_lowest_cost_node(costs)
|
||||
step += 1
|
||||
print("--------------------")
|
||||
|
||||
print(processed)
|
||||
print(parents)
|
||||
print(costs)
|
||||
|
||||
|
||||
dijkstra_algo(graph_notebook, costs_notebook, parents_notebook)
|
|
@ -1,11 +0,0 @@
|
|||
```mermaid
|
||||
flowchart LR
|
||||
B(book) -- 5 -->REC(record)
|
||||
B -- 0 --> P(poster)
|
||||
P -- 35 --> D(drums)
|
||||
REC -- 20 --> D
|
||||
REC -- 15 --> BG(bas guitar)
|
||||
P -- 30 -->BG
|
||||
BG -- 20 --> PIA(piano)
|
||||
D -- 10 --> PIA
|
||||
```
|
|
@ -1,8 +0,0 @@
|
|||
```mermaid
|
||||
flowchart LR
|
||||
ST(Start) -- 6 --> A
|
||||
ST -- 2 --> B
|
||||
A -- 1 --> F(Finish)
|
||||
B -- 5 --> F
|
||||
B -- 3 --> A
|
||||
```
|
|
@ -1,36 +0,0 @@
|
|||
from collections import deque
|
||||
|
||||
graph = {}
|
||||
graph["you"] = ["alice", "bob", "claire"]
|
||||
graph["bob"] = ["anuj", "peggy"]
|
||||
graph["alice"] = ["peggy"]
|
||||
graph["claire"] = ["thom", "jonny"]
|
||||
graph["anuj"] = []
|
||||
graph["peggy"] = []
|
||||
graph["thom"] = []
|
||||
graph["jonny"] = []
|
||||
|
||||
|
||||
def person_is_seller(name):
|
||||
return name[-1] == "z"
|
||||
|
||||
|
||||
def search(name):
|
||||
search_queue = deque()
|
||||
search_queue += graph[name]
|
||||
print(search_queue)
|
||||
searched = []
|
||||
while search_queue:
|
||||
person = search_queue.popleft()
|
||||
if person not in searched:
|
||||
if person_is_seller(person):
|
||||
print(person + " is a mango seller!")
|
||||
return True
|
||||
else:
|
||||
search_queue += graph[person]
|
||||
searched.append(person)
|
||||
print(searched)
|
||||
return False
|
||||
|
||||
|
||||
search("you")
|
|
@ -1,42 +0,0 @@
|
|||
# Штаты, которые необходимо покрыть
|
||||
states_needed = set(["mt", "wa", "or", "id", "nv", "ut", "ca", "az"])
|
||||
|
||||
# Станции, на которых вещают имеющиеся радиостанции
|
||||
stations = {}
|
||||
stations["kone"] = set(["id", "nv", "ut"])
|
||||
stations["ktwo"] = set(["wa", "id", "mt"])
|
||||
stations["kthree"] = set(["or", "nv", "ca"])
|
||||
stations["kfour"] = set(["nv", "ut"])
|
||||
stations["kfive"] = set(["ca", "az"])
|
||||
|
||||
# Набор радиостанций, покрывающий все необходимые штаты
|
||||
final_stations = set()
|
||||
|
||||
while states_needed:
|
||||
best_station = None
|
||||
# Штаты, обслуживаемые этой станцией, которые еще не входят в текущее покрытие
|
||||
states_covered = set()
|
||||
|
||||
# Перебор всех радиостанций и поиск наилучшей из них
|
||||
for station, states_for_station in stations.items():
|
||||
# Пересечение множеств необходимых к покрытию станций с станциями для
|
||||
# итерируемой радиостанции
|
||||
covered = states_needed & states_for_station
|
||||
|
||||
# Если длина множества пересечения больше длины покрытия лучшей текущей станции
|
||||
# Иными словами в пересечение входит больше покрываемых штатов, чем для текущей
|
||||
# лучшей станции
|
||||
if len(covered) > len(states_covered):
|
||||
# Назначаем эту станцию лучшей
|
||||
best_station = station
|
||||
# Переопределяем штаты, покрываемые лучшей на данный момент станцией
|
||||
states_covered = covered
|
||||
|
||||
# После прохождения цикла лучшая станция добавляется в список станций для покрытия
|
||||
final_stations.add(best_station)
|
||||
|
||||
# Необходимо вычесть из нужных для покрытия станций те, которые входят в найденную
|
||||
# станцию
|
||||
states_needed -= states_covered
|
||||
|
||||
print(final_stations)
|
Binary file not shown.
|
@ -1,26 +0,0 @@
|
|||
from typing import List
|
||||
|
||||
|
||||
class Solution:
|
||||
def generate(self, numRows: int) -> List[List[int]]:
|
||||
if numRows == 1:
|
||||
return [[1]]
|
||||
if numRows == 2:
|
||||
return [[1],[1,1]]
|
||||
result = [[1], [1,1]]
|
||||
for i in range(3, numRows+1):
|
||||
tmp = [0] * i
|
||||
tmp[0] = 1
|
||||
tmp[len(tmp)-1] = 1
|
||||
for j in range(1, len(tmp)-1):
|
||||
prev = result[i-2]
|
||||
tmp[j] = prev[j-1] + prev[j]
|
||||
result.append(tmp)
|
||||
return result
|
||||
|
||||
print(Solution().generate(numRows=5))
|
||||
print("-"*60)
|
||||
print(Solution().generate(numRows=1))
|
||||
print("-"*60)
|
||||
print(Solution().generate(numRows=10))
|
||||
print("-"*60)
|
|
@ -1,13 +0,0 @@
|
|||
from typing import List
|
||||
|
||||
|
||||
class Solution:
|
||||
def maxProfit(self, prices: List[int]) -> int:
|
||||
min_price = prices[0]
|
||||
max_profit = 0
|
||||
|
||||
for price in prices[1:]:
|
||||
max_profit = max(max_profit, price - min_price)
|
||||
min_price = min(min_price, price)
|
||||
|
||||
return max_profit
|
|
@ -1,13 +0,0 @@
|
|||
# Самостоятельно не решил
|
||||
from typing import List
|
||||
|
||||
|
||||
class Solution:
|
||||
def maxProfit(self, prices: List[int]) -> int:
|
||||
return prices[1:]
|
||||
|
||||
|
||||
sl1 = Solution()
|
||||
print(sl1.maxProfit(prices=[7, 1, 5, 3, 6, 4]))
|
||||
print(sl1.maxProfit(prices=[7, 6, 4, 3, 1]))
|
||||
print(sl1.maxProfit(prices=[2, 1, 2, 1, 0, 1, 2]))
|
Binary file not shown.
Before Width: | Height: | Size: 158 KiB |
|
@ -1,20 +0,0 @@
|
|||
from typing import List
|
||||
|
||||
|
||||
class Solution:
|
||||
def majorityElement(self, nums: List[int]) -> int:
|
||||
majority_limit = len(nums) / 2
|
||||
count_store = {}
|
||||
for elem in nums:
|
||||
try:
|
||||
count_store[elem] += 1
|
||||
except KeyError:
|
||||
count_store[elem] = 1
|
||||
if count_store[elem] > majority_limit:
|
||||
return elem
|
||||
|
||||
|
||||
sl1 = Solution()
|
||||
sl2 = Solution()
|
||||
print(sl1.majorityElement(nums=[3, 2, 3]))
|
||||
print(sl1.majorityElement(nums=[2, 2, 1, 1, 1, 2, 2]))
|
|
@ -1,20 +0,0 @@
|
|||
from typing import List
|
||||
|
||||
|
||||
class Solution:
|
||||
def majorityElement(self, nums: List[int]) -> int:
|
||||
majority_limit = len(nums) / 2
|
||||
count_store = {}
|
||||
for elem in nums:
|
||||
if elem not in count_store.keys():
|
||||
count_store[elem] = 1
|
||||
else:
|
||||
count_store[elem] += 1
|
||||
if count_store[elem] > majority_limit:
|
||||
return elem
|
||||
|
||||
|
||||
sl1 = Solution()
|
||||
sl2 = Solution()
|
||||
print(sl1.majorityElement(nums=[3, 2, 3]))
|
||||
print(sl1.majorityElement(nums=[2, 2, 1, 1, 1, 2, 2]))
|
|
@ -1,19 +0,0 @@
|
|||
from typing import List
|
||||
|
||||
|
||||
class Solution:
|
||||
def rotate(self, nums: List[int], k: int) -> None:
|
||||
"""
|
||||
Do not return anything, modify nums in-place instead.
|
||||
"""
|
||||
while k > 0:
|
||||
elem = nums.pop()
|
||||
nums.insert(0, elem)
|
||||
k -= 1
|
||||
return nums
|
||||
|
||||
|
||||
sl1 = Solution()
|
||||
sl2 = Solution()
|
||||
print(sl1.rotate(nums=[1, 2, 3, 4, 5, 6, 7], k=3))
|
||||
print(sl1.rotate(nums=[-1, -100, 3, 99], k=2))
|
Binary file not shown.
Before Width: | Height: | Size: 128 KiB |
|
@ -1,11 +0,0 @@
|
|||
from typing import List
|
||||
|
||||
|
||||
class Solution:
|
||||
def removeElement(self, nums: List[int], val: int) -> int:
|
||||
index = 0
|
||||
for i in range(len(nums)):
|
||||
if nums[i] != val:
|
||||
nums[index] = nums[i]
|
||||
index += 1
|
||||
return index
|
|
@ -1,18 +0,0 @@
|
|||
from typing import List
|
||||
|
||||
|
||||
class Solution:
|
||||
def removeElement(self, nums: List[int], val: int) -> int:
|
||||
counter = 0
|
||||
nums_iterator_index = len(nums) - 1
|
||||
while nums_iterator_index >= 0:
|
||||
if nums[nums_iterator_index] == val:
|
||||
del nums[nums_iterator_index]
|
||||
else:
|
||||
counter += 1
|
||||
nums_iterator_index -= 1
|
||||
return counter
|
||||
|
||||
|
||||
print(Solution().removeElement(nums=[3, 2, 2, 3], val=3))
|
||||
print(Solution().removeElement(nums=[0, 1, 2, 2, 3, 0, 4, 2], val=2))
|
|
@ -1 +0,0 @@
|
|||
[link](https://leetcode.com/problems/remove-element/description/?envType=study-plan-v2&envId=top-interview-150)
|
Binary file not shown.
Before Width: | Height: | Size: 145 KiB |
|
@ -1,36 +0,0 @@
|
|||
from typing import List
|
||||
|
||||
|
||||
class Solution:
|
||||
def removeDuplicates(self, nums: List[int]) -> int:
|
||||
j = 1
|
||||
for i in range(1, len(nums)):
|
||||
if nums[i] != nums[i - 1]:
|
||||
nums[j] = nums[i]
|
||||
j += 1
|
||||
print(nums)
|
||||
return j
|
||||
|
||||
|
||||
print(Solution().removeDuplicates(nums=[1, 1, 2]))
|
||||
print()
|
||||
print(Solution().removeDuplicates(nums=[0, 0, 1, 1, 1, 2, 2, 3, 3, 4]))
|
||||
|
||||
"""
|
||||
The code starts iterating from i = 1 because we need to compare each element with its
|
||||
previous element to check for duplicates.
|
||||
|
||||
The main logic is inside the for loop:
|
||||
|
||||
1. If the current element nums[i] is not equal to the previous element nums[i - 1],
|
||||
it means we have encountered a new unique element.
|
||||
2. In that case, we update nums[j] with the value of the unique element at nums[i],
|
||||
and then increment j by 1 to mark the next position for a new unique element.
|
||||
3. By doing this, we effectively overwrite any duplicates in the array and only keep
|
||||
the unique elements.
|
||||
|
||||
Once the loop finishes, the value of j represents the length of the resulting array
|
||||
with duplicates removed.
|
||||
|
||||
Finally, we return j as the desired result.
|
||||
"""
|
|
@ -1,21 +0,0 @@
|
|||
from typing import List
|
||||
|
||||
|
||||
class Solution:
|
||||
def removeDublicates(self, nums: List[int]) -> int:
|
||||
counter = 1
|
||||
nums_unique_index = 0
|
||||
delete_candidates = []
|
||||
for i in range(1, len(nums)):
|
||||
if nums[i] == nums[nums_unique_index]:
|
||||
delete_candidates.append(i)
|
||||
else:
|
||||
nums_unique_index = i
|
||||
counter += 1
|
||||
for index in sorted(delete_candidates, reverse=True):
|
||||
del nums[index]
|
||||
return counter
|
||||
|
||||
|
||||
print(Solution().removeDublicates(nums=[1, 1, 2]))
|
||||
print(Solution().removeDublicates(nums=[0, 0, 1, 1, 1, 2, 2, 3, 3, 4]))
|
|
@ -1 +0,0 @@
|
|||
[link](https://leetcode.com/problems/remove-duplicates-from-sorted-array/description/?envType=study-plan-v2&envId=top-interview-150)
|
|
@ -1,13 +0,0 @@
|
|||
from typing import List
|
||||
|
||||
|
||||
class Solution:
|
||||
def searchInsert(self, nums: List[int], target: int) -> int:
|
||||
if not nums:
|
||||
return 0
|
||||
|
||||
for i, num in enumerate(nums):
|
||||
if num >= target:
|
||||
return i
|
||||
|
||||
return len(nums)
|
|
@ -1,33 +0,0 @@
|
|||
from typing import List
|
||||
|
||||
|
||||
class Solution:
|
||||
def searchInsert(self, nums: List[int], target: int) -> int:
|
||||
if len(nums) == 1:
|
||||
return 1 if target > nums[0] else 0
|
||||
max = len(nums) - 1
|
||||
i = 0
|
||||
while i < max:
|
||||
if nums[i] == target:
|
||||
return i
|
||||
if target > nums[i]:
|
||||
i += 1
|
||||
if target < nums[i]:
|
||||
return i
|
||||
return i + 1 if target != nums[i] else i
|
||||
|
||||
|
||||
sl1 = Solution()
|
||||
print(sl1.searchInsert([1, 3, 5, 6], target=5))
|
||||
print("---")
|
||||
print(sl1.searchInsert([1, 3, 5, 6], target=2))
|
||||
print("---")
|
||||
print(sl1.searchInsert([1, 3, 5, 6], target=7))
|
||||
print("---")
|
||||
print(sl1.searchInsert([1, 3], target=1))
|
||||
print("---")
|
||||
print(sl1.searchInsert([1, 3], target=3))
|
||||
print("---")
|
||||
print(sl1.searchInsert([1], target=0))
|
||||
print("---")
|
||||
print(sl1.searchInsert([1], target=1))
|
|
@ -1,41 +0,0 @@
|
|||
from typing import List
|
||||
|
||||
|
||||
class Solution:
|
||||
def binary_search(self, array, x, low, high):
|
||||
if high >= low:
|
||||
mid = low + (high - low) // 2
|
||||
if array[mid] == x:
|
||||
return mid, None, None
|
||||
elif array[mid] > x:
|
||||
return self.binary_search(array, x, low, mid - 1)
|
||||
else:
|
||||
return self.binary_search(array, x, mid + 1, high)
|
||||
else:
|
||||
return None, high, low
|
||||
|
||||
def searchInsert(self, nums: List[int], target: int) -> int:
|
||||
if len(nums) == 1:
|
||||
return 1 if target > nums[0] else 0
|
||||
bingo, high, low = self.binary_search(nums, target, 0, len(nums) - 1)
|
||||
print(f"b: {bingo}")
|
||||
print(f"h: {high}")
|
||||
print(f"l: {low}")
|
||||
if bingo or bingo == 0:
|
||||
return bingo
|
||||
else:
|
||||
return low
|
||||
|
||||
|
||||
sl1 = Solution()
|
||||
print(sl1.searchInsert([1, 3, 5, 6], target=5))
|
||||
print("---")
|
||||
print(sl1.searchInsert([1, 3, 5, 6], target=2))
|
||||
print("---")
|
||||
print(sl1.searchInsert([1, 3, 5, 6], target=7))
|
||||
print("---")
|
||||
print(sl1.searchInsert([1, 3], target=1))
|
||||
print("---")
|
||||
print(sl1.searchInsert([1], target=0))
|
||||
print("---")
|
||||
print(sl1.searchInsert([1], target=1))
|
|
@ -1,24 +0,0 @@
|
|||
"""
|
||||
1)It initializes an empty list called "res", which will be used to store all the valid elements in the board.
|
||||
|
||||
2)It loops through each cell in the board using two nested "for" loops.
|
||||
For each cell, it retrieves the value of the element in that cell and stores it in a variable called "element".
|
||||
|
||||
3)If the element is not a dot ('.'), which means it's a valid number, the method adds three tuples to the "res" list:
|
||||
|
||||
The first tuple contains the row index (i) and the element itself.
|
||||
The second tuple contains the element itself and the column index (j).
|
||||
The third tuple contains the floor division of the row index by 3 (i // 3), the floor division of the column index by 3 (j // 3), and the element itself. This tuple represents the 3x3 sub-grid that the current cell belongs to.
|
||||
4)After processing all the cells, the method checks if the length of "res" is equal to the length of the set of "res".
|
||||
"""
|
||||
|
||||
|
||||
class Solution(object):
|
||||
def isValidSudoku(self, board):
|
||||
res = []
|
||||
for i in range(9):
|
||||
for j in range(9):
|
||||
element = board[i][j]
|
||||
if element != ".":
|
||||
res += [(i, element), (element, j), (i // 3, j // 3, element)]
|
||||
return len(res) == len(set(res))
|
|
@ -1,92 +0,0 @@
|
|||
from typing import List
|
||||
|
||||
|
||||
class Solution:
|
||||
def isValidSudoku(self, board: List[List[str]]) -> bool:
|
||||
size = 9
|
||||
cols = {
|
||||
0: [],
|
||||
1: [],
|
||||
2: [],
|
||||
3: [],
|
||||
4: [],
|
||||
5: [],
|
||||
6: [],
|
||||
7: [],
|
||||
8: [],
|
||||
}
|
||||
rows = {
|
||||
0: [],
|
||||
1: [],
|
||||
2: [],
|
||||
3: [],
|
||||
4: [],
|
||||
5: [],
|
||||
6: [],
|
||||
7: [],
|
||||
8: [],
|
||||
}
|
||||
mini_squares = {
|
||||
"00": [],
|
||||
"01": [],
|
||||
"02": [],
|
||||
"10": [],
|
||||
"11": [],
|
||||
"12": [],
|
||||
"20": [],
|
||||
"21": [],
|
||||
"22": [],
|
||||
}
|
||||
for j in range(0, size):
|
||||
mini_second_index = j // 3
|
||||
for i in range(0, size):
|
||||
mini_first_index = i // 3
|
||||
mini_square_index = f"{mini_first_index}{mini_second_index}"
|
||||
value = board[i][j]
|
||||
if value != ".":
|
||||
if (
|
||||
value in cols[j]
|
||||
or value in rows[i]
|
||||
or value in mini_squares[mini_square_index]
|
||||
):
|
||||
return False
|
||||
else:
|
||||
cols[j].append(value)
|
||||
rows[i].append(value)
|
||||
mini_squares[mini_square_index].append(value)
|
||||
return True
|
||||
|
||||
|
||||
sl1 = Solution()
|
||||
print(
|
||||
sl1.isValidSudoku(
|
||||
board=[
|
||||
["5", "3", ".", ".", "7", ".", ".", ".", "."],
|
||||
["6", ".", ".", "1", "9", "5", ".", ".", "."],
|
||||
[".", "9", "8", ".", ".", ".", ".", "6", "."],
|
||||
["8", ".", ".", ".", "6", ".", ".", ".", "3"],
|
||||
["4", ".", ".", "8", ".", "3", ".", ".", "1"],
|
||||
["7", ".", ".", ".", "2", ".", ".", ".", "6"],
|
||||
[".", "6", ".", ".", ".", ".", "2", "8", "."],
|
||||
[".", ".", ".", "4", "1", "9", ".", ".", "5"],
|
||||
[".", ".", ".", ".", "8", ".", ".", "7", "9"],
|
||||
]
|
||||
)
|
||||
)
|
||||
print("-" * 60)
|
||||
print(
|
||||
sl1.isValidSudoku(
|
||||
board=[
|
||||
["8", "3", ".", ".", "7", ".", ".", ".", "."],
|
||||
["6", ".", ".", "1", "9", "5", ".", ".", "."],
|
||||
[".", "9", "8", ".", ".", ".", ".", "6", "."],
|
||||
["8", ".", ".", ".", "6", ".", ".", ".", "3"],
|
||||
["4", ".", ".", "8", ".", "3", ".", ".", "1"],
|
||||
["7", ".", ".", ".", "2", ".", ".", ".", "6"],
|
||||
[".", "6", ".", ".", ".", ".", "2", "8", "."],
|
||||
[".", ".", ".", "4", "1", "9", ".", ".", "5"],
|
||||
[".", ".", ".", ".", "8", ".", ".", "7", "9"],
|
||||
]
|
||||
)
|
||||
)
|
||||
print("-" * 60)
|
|
@ -1,29 +0,0 @@
|
|||
"""Explanation
|
||||
|
||||
Imagine you have a car, and you have some distance to travel (the length of the array).
|
||||
This car has some amount of gasoline, and as long as it has gasoline, it can keep
|
||||
traveling on this road (the array). Every time we move up one element in the array,
|
||||
we subtract one unit of gasoline. However, every time we find an amount of gasoline
|
||||
that is greater than our current amount, we "gas up" our car by replacing our current
|
||||
amount of gasoline with this new amount.
|
||||
We keep repeating this process until we either run out of gasoline (and return false),
|
||||
or we reach the end with just enough gasoline (or more to spare), in which case we
|
||||
return true.
|
||||
Note: We can let our gas tank get to zero as long as we are able to gas up at that
|
||||
immediate location (element in the array) that our car is currently at.
|
||||
"""
|
||||
|
||||
from typing import List
|
||||
|
||||
|
||||
class Solution:
|
||||
def canJump(self, nums: List[int]) -> bool:
|
||||
gas = 0
|
||||
for n in nums:
|
||||
if gas < 0:
|
||||
return False
|
||||
elif n > gas:
|
||||
gas = n
|
||||
gas -= 1
|
||||
|
||||
return True
|
|
@ -1,32 +0,0 @@
|
|||
# Не решил ...
|
||||
|
||||
|
||||
from typing import List
|
||||
|
||||
|
||||
class Solution:
|
||||
def canJump(self, nums: List[int]) -> bool:
|
||||
def calculate_jump_for_elem(elem, elem_index):
|
||||
if elem == len(nums):
|
||||
return True
|
||||
for jump_distance in range(elem, -1, -1):
|
||||
if (elem_index + jump_distance) == len(nums) - 1:
|
||||
return True
|
||||
if jump_distance == 0:
|
||||
continue
|
||||
jump_index = elem_index + jump_distance
|
||||
if jump_index > len(nums) - 1:
|
||||
continue
|
||||
next_elem = nums[jump_index]
|
||||
return calculate_jump_for_elem(next_elem, jump_index)
|
||||
|
||||
res = calculate_jump_for_elem(nums[0], 0)
|
||||
return res if res else False
|
||||
|
||||
|
||||
sl1 = Solution()
|
||||
print(sl1.canJump(nums=[2, 3, 1, 1, 4]))
|
||||
print(sl1.canJump(nums=[3, 2, 1, 0, 4]))
|
||||
print(sl1.canJump(nums=[1]))
|
||||
print(sl1.canJump(nums=[1, 2, 3]))
|
||||
print(sl1.canJump(nums=[2, 5, 0, 0]))
|
|
@ -1,31 +0,0 @@
|
|||
from typing import List
|
||||
|
||||
|
||||
class Solution:
|
||||
def plusOne(self, digits: List[int]) -> List[int]:
|
||||
|
||||
for i in range(len(digits) - 1, -1, -1):
|
||||
if digits[i] == 9:
|
||||
digits[i] = 0
|
||||
else:
|
||||
digits[i] = digits[i] + 1
|
||||
return digits
|
||||
return [1] + digits
|
||||
|
||||
|
||||
sl1 = Solution()
|
||||
print(sl1.plusOne([1, 3, 5, 6]))
|
||||
print("---")
|
||||
print(sl1.plusOne([1, 2, 3]))
|
||||
print("---")
|
||||
print(sl1.plusOne([4, 3, 2, 1]))
|
||||
print("---")
|
||||
print(sl1.plusOne([9, 9, 9]))
|
||||
print("---")
|
||||
print(sl1.plusOne([0]))
|
||||
print("---")
|
||||
print(sl1.plusOne([9]))
|
||||
print("---")
|
||||
print(sl1.plusOne([1, 9, 9, 9, 9]))
|
||||
print("---")
|
||||
print(sl1.plusOne([9, 8, 9]))
|
|
@ -1,44 +0,0 @@
|
|||
from typing import List
|
||||
|
||||
|
||||
class Solution:
|
||||
def plusOne(self, digits: List[int]) -> List[int]:
|
||||
j = len(digits) - 1
|
||||
if j == 0:
|
||||
if digits[0] + 1 < 10:
|
||||
digits[0] = digits[0] + 1
|
||||
return digits
|
||||
else:
|
||||
digits[0] = 1
|
||||
digits.append(0)
|
||||
return digits
|
||||
digits[j] = digits[j] + 1
|
||||
while j >= 1:
|
||||
if digits[j] < 10:
|
||||
return digits
|
||||
if digits[j] == 10:
|
||||
digits[j] = 0
|
||||
digits[j - 1] = digits[j - 1] + 1
|
||||
j -= 1
|
||||
if digits[0] == 10:
|
||||
digits[0] = 1
|
||||
digits.append(0)
|
||||
return digits
|
||||
|
||||
|
||||
sl1 = Solution()
|
||||
print(sl1.plusOne([1, 3, 5, 6]))
|
||||
print("---")
|
||||
print(sl1.plusOne([1, 2, 3]))
|
||||
print("---")
|
||||
print(sl1.plusOne([4, 3, 2, 1]))
|
||||
print("---")
|
||||
print(sl1.plusOne([9, 9, 9]))
|
||||
print("---")
|
||||
print(sl1.plusOne([0]))
|
||||
print("---")
|
||||
print(sl1.plusOne([9]))
|
||||
print("---")
|
||||
print(sl1.plusOne([1, 9, 9, 9, 9]))
|
||||
print("---")
|
||||
print(sl1.plusOne([9, 8, 9]))
|
|
@ -1,15 +0,0 @@
|
|||
from typing import List
|
||||
|
||||
|
||||
class Solution:
|
||||
def removeDuplicates(self, nums: List[int]) -> int:
|
||||
j = 1
|
||||
for i in range(1, len(nums)):
|
||||
if j == 1 or nums[i] != nums[j - 2]:
|
||||
nums[j] = nums[i]
|
||||
j += 1
|
||||
return j
|
||||
|
||||
|
||||
print(Solution().removeDuplicates(nums=[1, 1, 1, 2, 2, 3]))
|
||||
print(Solution().removeDuplicates(nums=[0, 0, 1, 1, 1, 1, 2, 3, 3]))
|
Binary file not shown.
|
@ -1,18 +0,0 @@
|
|||
from typing import List
|
||||
|
||||
|
||||
class Solution:
|
||||
def removeDuplicates(self, nums: List[int]) -> int:
|
||||
# print(nums)
|
||||
# j = 1
|
||||
# for i in range(1, len(nums)):
|
||||
# if nums[i] != nums[i - 1]:
|
||||
# nums[j] = nums[i]
|
||||
# j += 1
|
||||
# print(nums)
|
||||
# return j
|
||||
# Не решил:(
|
||||
|
||||
|
||||
print(Solution().removeDuplicates(nums=[1, 1, 1, 2, 2, 3]))
|
||||
print(Solution().removeDuplicates(nums=[0, 0, 1, 1, 1, 1, 2, 3, 3]))
|
|
@ -1,18 +0,0 @@
|
|||
class Solution:
|
||||
def isPalindrome(self, x: int) -> bool:
|
||||
res = [xx for xx in str(x)]
|
||||
if len(res) == 1:
|
||||
return True
|
||||
i, j = 0, len(res) - 1
|
||||
while i < j/2:
|
||||
if res[i] != len(res) / 2:
|
||||
return False
|
||||
i += 1
|
||||
j -= 1
|
||||
return True
|
||||
|
||||
print(Solution().isPalindrome(x=121))
|
||||
print(Solution().isPalindrome(x=-121))
|
||||
print(Solution().isPalindrome(x=10))
|
||||
print(Solution().isPalindrome(x=0))
|
||||
print(Solution().isPalindrome(x=1000030001))
|
File diff suppressed because it is too large
Load diff
|
@ -1,28 +0,0 @@
|
|||
from typing import List
|
||||
|
||||
|
||||
class Solution:
|
||||
def hasDuplicate(self, nums: List[int]) -> bool:
|
||||
if len(nums) == 0:
|
||||
return False
|
||||
res = dict()
|
||||
for entry in nums:
|
||||
is_dublicate = res.get(entry)
|
||||
if is_dublicate:
|
||||
return True
|
||||
res[entry] = True
|
||||
return False
|
||||
|
||||
|
||||
input_1 = [1, 2, 3, 3]
|
||||
input_2 = [1, 2, 3, 4]
|
||||
input_3 = []
|
||||
input_4 = [0]
|
||||
input_5 = [1, 2, 2, 2, 2, 3, 1, 1]
|
||||
|
||||
sol = Solution()
|
||||
print(sol.hasDuplicate(input_1))
|
||||
print(sol.hasDuplicate(input_2))
|
||||
print(sol.hasDuplicate(input_3))
|
||||
print(sol.hasDuplicate(input_4))
|
||||
print(sol.hasDuplicate(input_5))
|
|
@ -1,39 +0,0 @@
|
|||
from collections import defaultdict
|
||||
from typing import Dict, List
|
||||
|
||||
|
||||
class Solution:
|
||||
def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
|
||||
if len(strs) <= 1:
|
||||
return [strs]
|
||||
result: List[List[str]] = []
|
||||
char_counter: Dict[str, Dict[str, int]] = dict()
|
||||
for word in strs:
|
||||
sorted_word: str = "".join(sorted(word))
|
||||
# Get by sorted_word key
|
||||
sorted_entry = char_counter.get(sorted_word)
|
||||
if sorted_entry:
|
||||
char_counter[sorted_word].append(word)
|
||||
else:
|
||||
char_counter[sorted_word] = [word]
|
||||
for value in char_counter.values():
|
||||
result.append(value)
|
||||
|
||||
return result
|
||||
|
||||
|
||||
class NeetcodeSolution:
|
||||
def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
|
||||
ans = defaultdict(list)
|
||||
|
||||
for s in strs:
|
||||
count = [0] * 26
|
||||
for c in s:
|
||||
count[ord(c) - ord("a")] += 1
|
||||
ans[tuple(count)].append(s)
|
||||
return ans.values()
|
||||
|
||||
|
||||
s = Solution()
|
||||
strs = ["act", "pots", "tops", "cat", "stodsafjoooop", "hat"]
|
||||
print(s.groupAnagrams(strs))
|
|
@ -1,41 +0,0 @@
|
|||
class Solution:
|
||||
def isAnagram(self, s: str, t: str) -> bool:
|
||||
s_chars = dict()
|
||||
t_chars = dict()
|
||||
for s_char in s:
|
||||
new_char_check = s_chars.get(s_char)
|
||||
if not new_char_check:
|
||||
s_chars[s_char] = 1
|
||||
else:
|
||||
s_chars[s_char] += 1
|
||||
for t_char in t:
|
||||
new_char_check = t_chars.get(t_char)
|
||||
if not new_char_check:
|
||||
t_chars[t_char] = 1
|
||||
else:
|
||||
t_chars[t_char] += 1
|
||||
return True if s_chars == t_chars else False
|
||||
|
||||
|
||||
class NeetCodeSolution:
|
||||
def isAnagram(self, s: str, t: str) -> bool:
|
||||
if len(s) != len(t):
|
||||
return False
|
||||
|
||||
countS, countT = {}, {}
|
||||
|
||||
for i in range(len(s)):
|
||||
countS[s[i]] = 1 + countS.get(s[i], 0)
|
||||
countT[t[i]] = 1 + countT.get(t[i], 0)
|
||||
return countS == countT
|
||||
|
||||
|
||||
entry_1 = {"s": "racecar", "t": "carrace", "expected": True}
|
||||
entry_2 = {"s": "jar", "t": "jam", "expected": False}
|
||||
# entry_3 = {"s": "racecar", "t": "carrace", "expected": True}
|
||||
# entry_4 = {"s": "racecar", "t": "carrace", "expected": True}
|
||||
# entry_5 = {"s": "racecar", "t": "carrace", "expected": True}
|
||||
|
||||
s = Solution()
|
||||
print(s.isAnagram(entry_1["s"], entry_1["t"]))
|
||||
print(s.isAnagram(entry_2["s"], entry_2["t"]))
|
|
@ -1,21 +0,0 @@
|
|||
from collections import defaultdict
|
||||
from typing import Dict, List
|
||||
|
||||
|
||||
class Solution:
|
||||
def topKFrequent(self, nums: List[int], k: int) -> List[int]:
|
||||
frequency_hashmap: Dict[int, int] = defaultdict(int)
|
||||
result_hasmap: Dict[int, int] = defaultdict(int)
|
||||
for nums_entry in nums:
|
||||
frequency_hashmap[nums_entry] += 1
|
||||
if not result_hasmap[frequency_hashmap[nums_entry]]:
|
||||
result_hasmap[frequency_hashmap[nums_entry]] = nums_entry
|
||||
return result_hasmap
|
||||
# return list(result_hasmap.values())[-k:]
|
||||
|
||||
|
||||
s = Solution()
|
||||
# print(s.topKFrequent(nums=[1, 2, 2, 2, 5, 5, 5, 5, 3, 3, 3, 3, 3], k=2))
|
||||
# print(s.topKFrequent(nums=[1, 2, 2, 3, 3, 3], k=2))
|
||||
print(s.topKFrequent(nums=[1, 1, 1, 2, 2, 3], k=2))
|
||||
# print(s.topKFrequent(nums=[7, 7], k=1))
|
|
@ -1,26 +0,0 @@
|
|||
from typing import List
|
||||
|
||||
|
||||
class Solution:
|
||||
def twoSum(self, nums: List[int], target: int) -> List[int]:
|
||||
for i in range(0, len(nums)):
|
||||
for j in range(i + 1, len(nums)):
|
||||
if nums[i] + nums[j] == target:
|
||||
return [i, j]
|
||||
|
||||
|
||||
class NeetCodeSolution:
|
||||
def twoSum(self, nums: List[int], target: int) -> List[int]:
|
||||
prevMap = {} # val -> index
|
||||
|
||||
for i, n in enumerate(nums):
|
||||
diff = target - n
|
||||
if diff in prevMap:
|
||||
return [prevMap[diff], i]
|
||||
prevMap[n] = i
|
||||
|
||||
|
||||
s = Solution()
|
||||
print(s.twoSum([3, 4, 5, 6, 7], 7))
|
||||
print(s.twoSum([4, 5, 6], 10))
|
||||
print(s.twoSum([5, 5], 10))
|
Binary file not shown.
Before Width: | Height: | Size: 78 KiB |
7
poetry.lock
generated
7
poetry.lock
generated
|
@ -1,7 +0,0 @@
|
|||
# This file is automatically @generated by Poetry 1.4.2 and should not be changed by hand.
|
||||
package = []
|
||||
|
||||
[metadata]
|
||||
lock-version = "2.0"
|
||||
python-versions = "^3.10"
|
||||
content-hash = "53f2eabc9c26446fbcc00d348c47878e118afc2054778c3c803a0a8028af27d9"
|
|
@ -1,17 +0,0 @@
|
|||
// Binary Search in C
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
int r = 0;
|
||||
int test_array[] = {1,2,5};
|
||||
int test_result[5];
|
||||
int k = sizeof(test_array) / sizeof(test_array[0]);
|
||||
for (int i = 1; i < k; i++) {
|
||||
r = 10*r + test_array[i];
|
||||
test_result[i]= r / 2;
|
||||
r = r % 2;
|
||||
printf("%d", test_result[i]);
|
||||
}
|
||||
}
|
|
@ -1,17 +0,0 @@
|
|||
def calculate_negative_power_of_two(n: int):
|
||||
result_array = []
|
||||
for i in range(1, n):
|
||||
result_array.append(i)
|
||||
print(result_array)
|
||||
for k in range(0, n - 1):
|
||||
r = 0
|
||||
print(".", end="")
|
||||
for i in range(0, k):
|
||||
r = 10 * r + result_array[i]
|
||||
result_array[i] = r // 2
|
||||
r = r % 2
|
||||
print(result_array[i], end="")
|
||||
result_array[k] = 5
|
||||
print("5")
|
||||
|
||||
calculate_negative_power_of_two(20)
|
|
@ -1,12 +0,0 @@
|
|||
if __name__ == "__main__":
|
||||
input_array = [3, 1, 2, 5]
|
||||
result_array = []
|
||||
r = 0
|
||||
for index, value in enumerate(input_array):
|
||||
r = 10 * r + value
|
||||
result_array.append(r // 2)
|
||||
r = r % 2
|
||||
if r != 0:
|
||||
r = 10 * r
|
||||
result_array.append(r//2)
|
||||
print(result_array)
|
|
@ -1,4 +0,0 @@
|
|||
{
|
||||
"venv": ".venv",
|
||||
"venvPath": "/home/pro100ton/Documents/development/algos_and_structures"
|
||||
}
|
Loading…
Reference in a new issue