Amazon OA

Dois problemas clássicos focados em eficiência, escala e edge cases. Use o treino de 5 passos para responder com clareza: Clarify → Rephrase → Algorithm → Code → Review.

Provas finais: 0/4

Prova final: Permutation Sorter

Exercício: Permutation Sorter (OA) — shifts + reverse

Pré‑requisitos: 0/5

Faltam 5 grupos

Pré-requisitos necessários

  • Soma do Array (for...of)Abrir
  • Find Index (loop simples)Abrir
  • Reverse Array (novo array)Abrir
  • Concluir um dois‑ponteiros em array ordenado

    • Two Sum (array ordenado, dois ponteiros)Abrir
    • Remover Duplicados (array ordenado)Abrir
  • Concluir Merge Sort ou Quick Sort

    • Merge Sort (estável)Abrir
    • Quick Sort (retorna novo array)Abrir

Permutation Sorter

Ordenar uma permutação usando apenas Reverse (inverter tudo) e Shift (rotacionar), minimizando operações.

Restrições

  • n pode ser grande (ex.: 1e5)
  • não simular rotações repetidas

Ideias-chave

  • Identificar posição do 1
  • Descobrir orientação: vizinho do 1 é 2 ou n
  • Calcular número mínimo de operações matematicamente

Preparação guiada

Treino: Clarify

Liste 4 perguntas de Clarify que você faria antes de codar este tipo de problema.

Exercício: Big O e TLE

Explique por que simular Shift com operações de array repetidas tende a dar TLE.

Exercício: Edge cases

Quais edge cases você testaria (ex.: já ordenado, reverse completo, n=1)?

Prova final: Minimum Errors

Exercício: Minimum Errors (subsequências + BigInt)

Pré‑requisitos: 0/4

Faltam 4 grupos

Pré-requisitos necessários

  • Valid Anagram (frequência)Abrir
  • Subarray Sum Equals K (prefix sum + Map)Abrir
  • Minimum Window Substring (janela variável)Abrir
  • Concluir um exercício de grafos (topologia ou ilhas)

    • Course Schedule (Kahn/DFS)Abrir
    • Number of Islands (BFS/DFS)Abrir

Minimum Errors

Substituir '!' por 0/1 minimizando custo de subsequências '01' (custo x) e '10' (custo y).

Restrições

  • n até 1e5
  • resultado pode ser grande (usar BigInt e módulo 1e9+7)

Ideias-chave

  • Contagem acumulada de zeros/uns para calcular pares em O(n)
  • Evitar operações caras em string grande dentro de loop
  • Cuidado para não inverter '01' com '10'

Preparação guiada

Treino: Clarify

Liste 4 perguntas de Clarify que você faria antes de codar este tipo de problema.

Exercício: Contagem de subsequências

Dada a string '0101' e x=2, y=3, calcule custo total manualmente (pares '01' e '10').

Exercício: BigInt no JS

Mostre como você declararia MOD e faria soma/multiplicação usando BigInt.

Prova final: Koko Eating Bananas

Exercício: Koko Eating Bananas (Binary Search na resposta)

Pré‑requisitos: 0/4

Faltam 4 grupos

Pré-requisitos necessários

  • Soma do Array (for...of)Abrir
  • Find Index (loop simples)Abrir
  • Concluir base de two pointers ou janela fixa

    • Two Sum (array ordenado, dois ponteiros)Abrir
    • Máxima Média (janela fixa k)Abrir
  • Quick Select (k-th maior)Abrir

Koko Eating Bananas

Encontrar a menor velocidade k para comer todas as pilhas em h horas usando busca binária na resposta.

Restrições

  • 1 ≤ piles.length ≤ 1e5
  • valores até 1e9
  • h pode ser grande

Ideias-chave

  • Predicado monotônico: com velocidade k, soma das horas ≤ h?
  • Buscar o menor k que satisfaz
  • Atenção a overflow e arredondamento (ceil)

Preparação guiada

Treino: Clarify

Liste 4 perguntas de Clarify que você faria antes de codar este tipo de problema.

Exercício: Predicado

Escreva a função ok(k) que testa se Koko finaliza em h horas para as pilhas informadas.

Prova final: Capacity to Ship Packages Within D Days

Exercício: Capacity to Ship Packages Within D Days

Pré‑requisitos: 0/4

Faltam 4 grupos

Pré-requisitos necessários

  • Soma do Array (for...of)Abrir
  • Reverse Array (novo array)Abrir
  • Concluir Merge Sort ou Quick Sort

    • Merge Sort (estável)Abrir
    • Quick Sort (retorna novo array)Abrir
  • Concluir uma busca binária na resposta

    • Koko Eating Bananas (Binary Search na resposta)Abrir
    • Capacity to Ship Packages Within D DaysAbrir

Capacity to Ship Packages Within D Days

Achar a menor capacidade para enviar todos os pacotes em D dias (busca binária na resposta com simulação de dias).

Restrições

  • 1 ≤ weights.length ≤ 1e5
  • D ≥ 1
  • sum(weights) pode ser grande

Ideias-chave

  • Limites: lo = max(weights), hi = sum(weights)
  • Predicado: com capacidade C, quantos dias precisamos?
  • Fechar no menor C que atende

Preparação guiada

Treino: Clarify

Liste 4 perguntas de Clarify que você faria antes de codar este tipo de problema.

Exercício: Simular dias

Dada uma capacidade C, descreva como simular a quantidade de dias necessária.