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 / 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) {
@tatsuyax25
tatsuyax25 / minDeletionSize.js
Created December 22, 2025 17:09
You are given an array of n strings strs, all of the same length. We may choose any deletion indices, and we delete all the characters in those indices for each string. For example, if we have strs = ["abcdef","uvwxyz"] and deletion indices {0, 2,
/**
* @param {string[]} strs
* @return {number}
*/
var minDeletionSize = function(strs) {
const n = strs.length; // number of rows
const m = strs[0].length; // number of columns (all strings same length)
// dp[i] = length of the longest valid chain ending at column i
const dp = Array(m).fill(1);
@tatsuyax25
tatsuyax25 / minDeletionSize.js
Created December 21, 2025 18:06
You are given an array of n strings strs, all of the same length. We may choose any deletion indices, and we delete all the characters in those indices for each string. For example, if we have strs = ["abcdef","uvwxyz"] and deletion indices {0, 2,
/**
* @param {string[]} strs
* @return {number}
*/
var minDeletionSize = function(strs) {
const n = strs.length;
const m = strs[0].length;
// sorted[i] = true means strs[i] < strs[i+1] is already determined
const sorted = Array(n - 1).fill(false);
@tatsuyax25
tatsuyax25 / minDeletionSize.js
Created December 20, 2025 21:30
You are given an array of n strings strs, all of the same length. The strings can be arranged such that there is one on each line, making a grid. For example, strs = ["abc", "bce", "cae"] can be arranged as follows: abc bce cae You want to delete t
/**
* @param {string[]} strs
* @return {number}
*/
var minDeletionSize = function(strs) {
// Number of rows (strings)
const n = strs.length;
// Number of columns (length of each string)
const m = strs[0].length;