Posted on: June 23, 2025 06:14 PM
Posted by: Renato
Categories: PHP Laravel laravelphp LeetCode
Views: 281
PHP soma dupla do LeetCode
Solução em PHP para o problema de soma dupla do LeetCode! Esta versão otimizada ignora a iteração desnecessária do primeiro elemento, tornando-a ainda mais limpa. Utiliza um mapa de hash para complexidade de tempo O(n) — eficiente e elegante! O algoritmo inicializa de forma inteligente o mapa de hash com o primeiro elemento e inicia o loop a partir do índice 1, evitando verificações redundantes. Ao armazenar o complemento de cada elemento, ele atinge o tempo O(n) com sobrecarga mínima. Um pequeno ajuste para maior clareza! 🚀
#LeetCode #PHP #Coding #Algorithms"
* @param Integer[] $nums
* @param Integer $target
* @return Integer[]
*/
function twoSum(array $nums, int $target): ?array {
$compliment = $target - $nums[$i];
}
}
}
Segue um exemplo prático de como você pode utilizar essa classe Solution com a função twoSum em PHP:
$nums = [2, 7, 11, 15];
$target = 9;
$result = $solution->twoSum($nums, $target);
if ($result !== null) {
echo "Índices encontrados: [" . implode(', ', $result) . "]\n";
} else {
echo "Nenhuma combinação encontrada.\n";
}
Saida: Índices encontrados: [0, 1]
✔️ Explicação:
-
O número no índice
0é2. -
O número no índice
1é7. -
2 + 7 = 9(que é o valor alvo).
Portanto, os índices [0, 1] são a solução correta.
Aqui está um exemplo prático usando Laravel. Vamos criar uma rota, um controller e um endpoint que recebe um array de números e um alvo (target) e retorna os índices dos dois números cuja soma corresponde ao alvo.
1️⃣ Criar o Controller:
Codigo Controller
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class TwoSumController extends Controller
{
public function findTwoSum(Request $request)
{
// Validação simples
$data = $request->validate([
'nums' => 'required|array',
'target' => 'required|integer',
]);
$nums = $data['nums'];
$target = $data['target'];
$map = [$nums[0] => 0];
for ($i = 1; $i < count($nums); $i++) {
$compliment = $target - $nums[$i];
if (array_key_exists($compliment, $map)) {
return response()->json([
'indices' => [$map[$compliment], $i],
'numbers' => [$nums[$map[$compliment]], $nums[$i]],
]);
}
$map[$nums[$i]] = $i;
}
return response()->json([
'message' => 'Nenhuma combinação encontrada',
], 404);
}
}
Uma rota api: routes/api.php
use App\Http\Controllers\TwoSumController;
Route::post('/two-sum', [TwoSumController::class, 'findTwoSum']);
Pode usar o postman:
http://127.0.0.1:8000/api/two-sum
- Body json:
"nums": [2, 7, 11, 15],
"target": 9
}
Resposta:
"indices": [0, 1],
"numbers": [2, 7]
}
Fonte:
- Facebook: PHP solution for LeetCode's
..
Donate to Site
Renato
Developer