← Back to Tutorials

1. Arrays (Days 1—14)

Array optimization flow

Two Sum

# Brute Force O(n²)
def twoSum(nums, target):
    for i in range(len(nums)):
        for j in range(i+1, len(nums)):
            if nums[i] + nums[j] == target:
                return [i, j]

# Hash Map O(n)
def twoSum(nums, target):
    seen = {}
    for i, val in enumerate(nums):
        diff = target - val
        if diff in seen:
            return [seen[diff], i]
        seen[val] = i

Best Time to Buy & Sell Stock

def maxProfit(prices):
    min_price = float('inf')
    max_profit = 0
    for price in prices:
        min_price = min(min_price, price)
        max_profit = max(max_profit, price - min_price)
    return max_profit

Majority Element

// C++ — Boyer-Moore Voting O(n)
int majorityElement(vector<int>& nums) {
    int count = 0, candidate = 0;
    for (int num : nums) {
        if (count == 0) candidate = num;
        count += (num == candidate) ? 1 : -1;
    }
    return candidate;
}

More Problems

ProblemApproachComplexity
Move ZeroesTwo pointers, swap non-zero leftO(n), O(1)
Squares of Sorted ArrayTwo pointers from endsO(n), O(n)
Merge Sorted ArrayMerge from endO(m+n), O(1)
Pivot IndexPrefix sumO(n), O(1)
Running SumIn-place prefixO(n), O(1)
✏️ Exercise: Solve Two Sum in Python using a hash map, then implement the O(1) space version of Move Zeroes. Aim for <15 min each.