Code-Alongs

Code-Along 1: Introduction to LeetCode and Basic Data Types

In this code-along, you'll learn how to navigate LeetCode and work with basic data types in JavaScript.

Code-Along 2: Problem Solving with JavaScript

Join us for a live coding session where we'll solve various programming problems using JavaScript.

Problem-Solving Approaches and Patterns

Developing a systematic approach to problem-solving is crucial for tackling coding challenges. Here's a framework to help you approach any coding problem:

The UMPIRE Method

  1. Understand the problem - Read carefully, identify inputs/outputs, clarify constraints
  2. Match the problem to similar ones - Recognize patterns from problems you've seen before
  3. Plan your approach - Design an algorithm before coding
  4. Implement your solution - Convert your plan to code
  5. Review your code - Look for bugs, edge cases, or optimizations
  6. Evaluate your solution - Analyze time and space complexity

Common Problem Types and Approaches

1. String Manipulation Problems

Example: Valid Palindrome

Problem: Determine if a string is a palindrome, considering only alphanumeric characters and ignoring case.

Approach:

  1. Remove non-alphanumeric characters and convert to lowercase
  2. Compare the string with its reverse
function isPalindrome(s) {
  // Remove non-alphanumeric and convert to lowercase
  const cleanString = s.toLowerCase().replace(/[^a-z0-9]/g, '');
  
  // Check if it reads the same forward and backward
  return cleanString === cleanString.split('').reverse().join('');
}

console.log(isPalindrome("A man, a plan, a canal: Panama")); // true
console.log(isPalindrome("race a car")); // false

2. Array Problems

Example: Two Sum

Problem: Given an array of numbers and a target sum, find two numbers that add up to the target.

Approach:

  1. Naive: Use nested loops to check all pairs (O(n²) time)
  2. Optimal: Use a hash map to store differences (O(n) time)
function twoSum(nums, target) {
  // Create a map to store values we've seen and their indices
  const map = new Map();
  
  // Check each number
  for (let i = 0; i < nums.length; i++) {
    // Calculate what value we need to find
    const complement = target - nums[i];
    
    // If we've seen that value before, return its index and the current index
    if (map.has(complement)) {
      return [map.get(complement), i];
    }
    
    // Otherwise, store this number and its index
    map.set(nums[i], i);
  }
  
  return null; // No solution found
}

console.log(twoSum([2, 7, 11, 15], 9)); // [0, 1]

Additional Resources