/holbertonschool-interview

If my Repo helps you or you make a Fork don't forget to give me a star ⭐ thank you

Primary LanguageC

C Logo

Holberton School - Preparation - Algorithms

Description

The goal of this algorithm is to determine if it is possible to open all boxes within a list of interconnected boxes.

Each box contains a list of keys that correspond to other boxes, and the challenge is to determine if all the boxes can be opened by following the keys provided.


Description

The "Insert in sorted linked list" algorithm allows the sorted insertion of a new node into a linked list, ensuring that the list remains sorted from smallest to largest based on the value contained in the nodes (n).

This function is useful for maintaining ordered lists and is a fundamental part of managing data and data structures in programming.


Description

An insertion into a data structure known as a "binary max-heap." A maximal binary heap is a data structure in which each parent node has a value greater than or equal to the values of its child nodes.

The heap_insert algorithm is used to add a new value to a maximum binary heap and maintain ownership of the heap.


Description

The "Minimum Operations" algorithm is a useful tool to efficiently calculate the minimum number of operations necessary to copy and paste text to achieve a specific length, based on the decomposition of n into prime factors.


Description

It is a program used to work with two-dimensional arrays that represent piles of sand.

The main objective of this algorithm is to calculate the sum of two piles of sand and apply rules that ensure the stability of the sum.

Each cell in the matrix represents a point in the sand pile and contains a number that represents the amount of sand in that cell.


Description

It is a data structure in which a linked list, which is a collection of elements connected to each other by nodes, forms a sequence that reads the same forward and backward.

In other words, the elements of the linked list are arranged in such a way that when they are traversed from the beginning to the end or from the end to the beginning, the same sequence of values is obtained. This means that the data stored in the linked list is a palindrome.

Checking whether a linked list is a palindrome often involves traversing the list and comparing the values both ways to determine if they are equal.


Description

Its main goal is to extract useful information from these logs, such as file sizes and HTTP status codes, and keep track of this information as it processes lines of standard input.

The algorithm calculates the total size of the files and keeps track of the number of occurrences of specific HTTP status codes.

Every time it processes 10 lines, it prints the total file size and status code counts in alphabetical order. Log parsing is useful for analyzing and summarizing large sets of logs, which can be valuable in monitoring, troubleshooting, and reporting tasks related to systems or web services.


Description

It is a data structure used in programming to represent a sequence of elements, where one or more elements of the list are linked in such a way that they form a loop or cycle.

This means that following links or references from one item to the next will eventually return to the same item within the list. Linked list cycles are used in algorithms and data structures for various applications, such as cycle detection in linked lists, algorithm optimization, and data representation in graph problems, among others.

These loops can be useful in situations where you need to loop through a sequence of elements repeatedly or where it is important to detect loops in a data structure.


Description

A palindrome is a sequence of characters, whether a word, phrase, or number, that reads the same way from left to right and from right to left.

In other words, it is a symmetrical structure that does not change when reversed, like "bear," "recognize," or "1221."


Description


Description

It aims to slide and merge a line of integers left or right. The number line is represented as a one-dimensional array.

This algorithm implements the basic rules of the 2048 game, where numbers slide and merge in a given direction, and the goal is to obtain larger numbers by combining adjacent elements with the same value.


Description

The Menger algorithm, also known as the "Menger Set" or the "Menger Sponge", is a three-dimensional fractal that can be considered a generalization of the Sierpinski triangle to three dimensions.

However, in this description, we will focus on the 2D Menger Sponge, which is a simplification of the three-dimensional fractal.


Description

The algorithm solves the N queens problem, which consists of placing N queens on an N×N chessboard such that no queen threatens another. The solution uses the backtracking technique, which is a recursive strategy to explore all possible board configurations.

In summary, the algorithm finds and displays all possible solutions to the N queens problem, meeting the requirements and constraints specified in the instructions.


Description

This algorithm takes advantage of the property of ordered arrays to efficiently construct a balanced AVL tree, dividing the array in half at each step and constructing nodes from the middle elements.


Description

The algorithm implements searching for a value in an ordered skip list of integers. A skip list is a data structure that combines a linked list with express rails that speed up searching.


Description

In summary, this algorithm allows you to obtain and display the names of characters from a specific Star Wars movie, using the SWAPI API and following a recursive approach to process the characters sequentially.


Description

The algorithm efficiently handles the task of computing the trapped water by precomputing the left and right maximum heights for each position, reducing redundant calculations.


Description

Heap Sort is a comparison-based sorting algorithm that uses a binary heap data structure to build a max heap or min heap. In the case of Heap Sort, we typically use a max heap.


Description

The advanced binary search algorithm is useful for finding the first occurrence of a specific value in a sorted array, especially when there may be duplicates of the value in the array.


Description

It is a program that makes requests to the Reddit API to count the frequency of keywords in the titles of the most popular posts in a specific subreddit.


Description

This code implements the heap_extract function to extract the root node of a Max Binary Heap and restore the max heap property.


Description


Description

The rotate_2d_matrix function takes a square two-dimensional array as input and rotates the array 90 degrees clockwise in-place. First, perform a transpose of the matrix by swapping elements along the main diagonal. Then, invert each row of the matrix. This process directly modifies the input matrix, thus achieving efficient 90 degree rotation in


Description

The function find_listint_loop is designed to detect and find the starting node of a loop in a singly linked list. It uses the Floyd's Tortoise and Hare algorithm, where two pointers traverse the list at different speeds. If there is a loop, the two pointers will eventually meet at some point within the loop.


Description

The key idea behind Merge Sort is that it exploits the fact that it is easier to merge two sorted arrays than to sort an unsorted array directly. This algorithm guarantees a time complexity of O(nlog(n))in all cases, making it more efficient than some other sorting algorithms for large datasets.


Description

The makeChange function aims to determine the minimum number of coins needed to reach a given total amount, using a set of coins with different denominations. The algorithm prioritizes the use of higher denomination coins, sorting them in descending order to minimize the total number of coins used.


Description

The provided code implements two C functions for manipulating a doubly circular list. These functions allow adding new nodes to the end or beginning of the list, each node containing a string of characters (str). Including the use of dynamic memory (malloc and strdup) as well as properly updating pointers to maintain the circular list structure.


Description

A sorting algorithm that arranges the elements of a list based on each digit, starting with the least significant and moving toward the most significant.

Least Significant Digit (LSD): The least significant digit of a number, it is the first digit used for sorting during the first iteration of the Radix Sort algorithm.

Counting Algorithm: A counting algorithm is used to arrange the elements based on the current digit during each iteration of the Radix Sort. This step involves counting the frequency of each digit and using that information to place the items in the correct position.

Stable Algorithm: Refers to the fact that the relative order of elements with equal digits is maintained during the sorting process. This ensures that if two elements have the same digit in a particular position, their relative order will not be altered during sorting.

Significant Digit: Each position in a number that contributes to the total value of the number. In the context of Radix Sort, iterations are performed based on the least significant digits towards the most significant digits.

Iteration: Each pass through the array during which the elements are sorted based on a specific digit.

Relative Order: The relative position of the elements in the list before and after an iteration of the Radix Sort algorithm.

Complete Sorting: The final result of the process, where all elements are sorted by all digits, from least significant to most significant.


Description

This code implements a function that calculates the perimeter of an island represented by a 2D grid. The grid consists of 0 and 1, where 0 represents water and 1 represents land. The function traverses each grid cell and calculates the perimeter based on the number of land cells and their adjacent land cells. Finally, it returns the total perimeter of the island.


Description

It is a tool for checking whether a given binary tree is a valid AVL tree, which can be useful for ensuring that a tree data structure meets certain balance properties.


Description

The wildcmp function compares two strings, s1 and s2, allowing s2 to contain the special character '' which can represent any string (including an empty string). It uses a recursive approach to compare the characters in both strings, especially handling the '' character. If both strings can be considered identical, return 1; otherwise, it returns 0. This function provides a flexible way to compare strings, allowing partial matches based on the '*' as a wildcard.


Description

Pascal's triangle is an infinite triangle-shaped numerical pattern where each number is the sum of the two numbers directly above it in the triangle.

The function begins by creating a list Triangle initialized with a list containing only the number 1, if n is greater than 0, which represents the first level of Pascal's triangle. Then, for each subsequent level of the triangle (represented by the range 1 to n-1), the function generates a new row of the triangle by calculating the sum of the two numbers directly above each number in the previous row.

Finally, the function returns the complete list representing Pascal's triangle up to level n.

If n is less than or equal to 0, the function returns an empty list, since there are no levels to display in Pascal's triangle in this case.


Description

The regex_match function checks whether a given pattern matches a given string, using simplified regular expression rules. It takes two parameters: the string str to parse and the pattern pattern to compare to the string.

In short, the function looks for matches between the pattern and the string, taking into account special characters such as '*' and '.', and returns 1 if there is a match and 0 if there is not.


Description

In summary, the code implements an algorithm to find all valid substrings in a string s, where each substring is a concatenation of a specific set of words. It uses a sliding window to iterate over the string and a helper function to check if all words are present in a given substring. The indexes where the valid substrings are found are stored in a dynamic array that is returned as a result. If no valid substring is found, NULL is returned.


Description

Determines the winner of a game where players remove prime numbers and their multiples from a set of consecutive integers.

Author

  • José Fernàndez Armas

You can contact me 📩

Fernandez Armas José Daniel

crasride crasride @crasride crasride