CLRS Graphs && Leetcode graphs - Day 14

Date:2025-08-15

Description:Leetcode Meta Questions Last 3 months

Grinding meta questions 2 days away

Merge arrays revisited (trick is to remember i gets placed first before j)

 */
var merge = function(nums1, m, nums2, n) {
    let i = m - 1;
    let j = n - 1;

    for (let k = nums1.length - 1; k >= 0; k--) {
        if (j < 0) {
            break;
        }

        if (nums1[i] > nums2[j]) {
            nums1[k] = nums1[i];
            i--;
        } else {
            nums1[k] = nums2[j];
            j--
        }

      
    }

    return nums1; 
};

Top K Frequent Elements

var topKFrequent = function(nums, k) {
    const counter = new Map();

    for (let num of nums) {
        counter.has(num) ? counter.set(num, counter.get(num) + 1) : counter.set(num, 1);
    }    

    const mapEntries = [...counter.entries()];

    sorted = mapEntries.sort((a, b) => b[1] - a[1]);

    return sorted.slice(0, k).map(el => el[0])
};

Basic Calculator II

function isNumeric(str) {
  if (str === " ") return false;
  return !isNaN(Number(str));
}

var calculate = function(s) {
    let i = 0;
    let cur = 0;
    let prev = 0;
    let res = 0;
    let cur_operation = "+";
    while (i < s.length) {
        let cur_char = s[i];

        if (isNumeric(cur_char)) {
            while (i < s.length && isNumeric(s[i])) { 
                cur = cur * 10 + parseInt(s[i]);
                i++;
            }

            i--;

            if (cur_operation === "+") {
                res += cur;
                prev = cur;
            } else if (cur_operation === "-") {
                res -= cur;
                
                prev = -cur;
            } else if (cur_operation === "*") {
                res -= prev;
                res += prev * cur;
                prev = prev * cur;
            } else {
                res -= prev;
                res += parseInt(prev/cur);
                prev = parseInt(prev/cur);
            }


        } else if (cur_char !== " ") {
            cur_operation = cur_char;
        }
        cur = 0;
        i++;
    }
    return res;
};

Find First and Last Position of Element in Sorted Array

var searchRange = function(nums, target) {
    let low = 0;
    let high = nums.length - 1;

    while (low <= high) {
        let mid = Math.floor(low + (high - low) / 2);

        if (target === nums[mid]) {
            let left = mid;
            let right = mid;
            while (nums[left] === target) {
                left--;
            }

            left++;
            start = left;

            while (nums[right] === target) {
                right++;
            }
            right--;
            end = right;

            return [start, end];
        }

        if (target < nums[mid]) {
            high = mid - 1;
        }

        if (target > nums[mid]) {
            low = mid + 1;
        }
    }

    return [-1, -1];
};

Simplify Path (needs revisiting)

var simplifyPath = function(path) {
   let arr = path.split("/").filter(Boolean);
    console.log({arr})
   let res = ""

   for (let i = 0; i < arr.length; i++) {
        let next = arr[i+1];
        let cur = arr[i];

        if (next === '..') {
            i += 1;
            continue;
        }

        if (cur === '.') {
            continue;
        }

        if (cur === '..') {
            // res = '/'
            continue;
        }
        console.log({res}, {cur})
        res += '/' + cur;
   }

   return res.length === 0 ? "/" : res;
};