Skip to content

Instantly share code, notes, and snippets.

View tatsuyax25's full-sized avatar
:octocat:
Focusing

Miguel Urena tatsuyax25

:octocat:
Focusing
View GitHub Profile
@tatsuyax25
tatsuyax25 / maxLevelSum.js
Created January 6, 2026 21:34
Given the root of a binary tree, the level of its root is 1, the level of its children is 2, and so on. Return the smallest level x such that the sum of all the values of nodes at level x is maximal.
/**
* Definition for a binary tree node.
* function TreeNode(val, left, right) {
* this.val = (val===undefined ? 0 : val)
* this.left = (left===undefined ? null : left)
* this.right = (right===undefined ? null : right)
* }
*/
/**
* @param {TreeNode} root
@tatsuyax25
tatsuyax25 / sumFourDivisors.js
Created January 4, 2026 19:40
Given an integer array nums, return the sum of divisors of the integers in that array that have exactly four divisors. If there is no such integer in the array, return 0.
/**
* @param {number[]} nums
* @return {number}
*/
var sumFourDivisors = function(nums) {
// Helper: return the sum of divisors of n if it has exactly 4 divisors.
// Otherwise return 0.
function sumIfFourDivisors(n) {
let count = 0; // how many divisors we've found
let sum = 0; // sum of those divisors
@tatsuyax25
tatsuyax25 / numOfWays.js
Created January 3, 2026 18:20
You have a grid of size n x 3 and you want to paint each cell of the grid with exactly one of the three colors: Red, Yellow, or Green while making sure that no two adjacent cells have the same color (i.e., no two cells that share vertical or horizont
/**
* @param {number} n
* @return {number}
*/
var numOfWays = function(n) {
const MOD = 1_000_000_007;
// a = number of ABC patterns for the current row
// b = number of ABA patterns for the current row
let a = 6; // ABC has 6 permutations
@tatsuyax25
tatsuyax25 / repeatedNTimes.js
Created January 2, 2026 19:23
You are given an integer array nums with the following properties: nums.length == 2 * n. nums contains n + 1 unique elements. Exactly one element of nums is repeated n times. Return the element that is repeated n times.
/**
* @param {number[]} nums
* @return {number}
*/
var repeatedNTimes = function(nums) {
// We'll use a Set to track which numbers we've seen.
const seen = new Set();
// Walk through each number in the array
for (let num of nums) {
@tatsuyax25
tatsuyax25 / plusOne.js
Created January 1, 2026 18:25
You are given a large integer represented as an integer array digits, where each digits[i] is the ith digit of the integer. The digits are ordered from most significant to least significant in left-to-right order. The large integer does not contain a
/**
* @param {number[]} digits
* @return {number[]}
*/
var plusOne = function(digits) {
// Start from the last digit and move left
for (let i = digits.length - 1; i >= 0; i--) {
// If the current digit is less than 9, we can safely increment it
// and return immediately because no carry is needed.
@tatsuyax25
tatsuyax25 / latestDayToCross.js
Created December 31, 2025 18:37
There is a 1-based binary matrix where 0 represents land and 1 represents water. You are given integers row and col representing the number of rows and columns in the matrix, respectively. Initially on day 0, the entire matrix is land. However, each
/**
* @param {number} row
* @param {number} col
* @param {number[][]} cells
* @return {number}
*/
var latestDayToCross = function(row, col, cells) {
// Helper: check if it's possible to cross on a given day
function canCross(day) {
// Build a grid where 1 = water, 0 = land
@tatsuyax25
tatsuyax25 / pyramidTransition.js
Created December 29, 2025 21:07
You are stacking blocks to form a pyramid. Each block has a color, which is represented by a single letter. Each row of blocks contains one less block than the row beneath it and is centered on top. To make the pyramid aesthetically pleasing, there
/**
* @param {string} bottom
* @param {string[]} allowed
* @return {boolean}
*/
var pyramidTransition = function(bottom, allowed) {
// STEP 1: Build a mapping from (left,right) -> list of possible tops
// Example: "ABC" means A+B -> C
const map = new Map();
for (let pattern of allowed) {
@tatsuyax25
tatsuyax25 / countNegatives.js
Last active December 28, 2025 18:03
Given a m x n matrix grid which is sorted in non-increasing order both row-wise and column-wise, return the number of negative numbers in grid.
/**
* @param {number[][]} grid - A 2D matrix sorted in non-increasing order
* @return {number} - Total count of negative numbers in the matrix
*/
var countNegatives = function (grid) {
let count = 0;
// Loop through each row
for (let row = 0; row < grid.length; row++) {
@tatsuyax25
tatsuyax25 / bestClosingTime.js
Created December 26, 2025 18:19
You are given the customer visit log of a shop represented by a 0-indexed string customers consisting only of characters 'N' and 'Y': if the ith character is 'Y', it means that customers come at the ith hour whereas 'N' indicates that no customers c
/**
* Given a string of 'Y' (customer arrives) and 'N' (no customer),
* find the hour to close the shop that minimizes penalty.
*
* Penalty rules:
* - Staying open while no customers come → +1 penalty for each 'N'
* - Closing early while customers would have come → +1 penalty for each 'Y'
*
* @param {string} customers
* @return {number}
@tatsuyax25
tatsuyax25 / minimumBoxes.js
Created December 24, 2025 19:56
You are given an array apple of size n and an array capacity of size m. There are n packs where the ith pack contains apple[i] apples. There are m boxes as well, and the ith box has a capacity of capacity[i] apples. Return the minimum number of box
/**
* @param {number[]} apple
* @param {number[]} capacity
* @return {number}
*/
var minimumBoxes = function(apple, capacity) {
// 1. Compute the total number of apples across all packs.
// Since aplles can be split across boxes, only the total matters.
let totalApples = 0;
for (let a of apple) {