PHP soma dupla do LeetCode

Posted on: June 23, 2025 06:14 PM

Posted by: Renato

Views: 280

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"

class Solution {
    /**
    * @param Integer[] $nums
    * @param Integer $target
    * @return Integer[]
    */
    function twoSum(array $nums, int $target): ?array {
        $map = [$nums[0] => 0];
        for ($i = 1; $i < count($nums); $i++) {
            $compliment = $target - $nums[$i];
            if (array_key_exists($compliment, $map)) return [$map[$compliment], $i];
            $map[$nums[$i]] = $i;
        }
        return null;
    }
}
 

Segue um exemplo prático de como você pode utilizar essa classe Solution com a função twoSum em PHP:

<?php
require_once 'Solution.php'; // Se estiver em outro arquivo
$solution = new Solution();
// Array de números
$nums = [2, 7, 11, 15];
// Alvo (target)
$target = 9;
// Chamada da função
$result = $solution->twoSum($nums, $target);
// Exibe o resultado
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:

php artisan make:controller TwoSumController
 

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

..

 


2

Share

Donate to Site


About Author

Renato

Developer

Add a Comment

Blog Search


Categories

Laravel (227) PHP (151) linux (124) Variados (110) ubuntu (58) Dicas (58) developer (48) postgresql (45) database (44) sql (42) Docker (32) mysql (31) front-end (31) devops (26) webdev (24) programming (23) tecnologia (19) eloquent (19) aws (19) dba (18) backend (16) OUTROS (17) laravelphp (16) debian (12) dev (12) git (10) react (10) reactjs (10) 100DaysOfCode (10) PHP Swoole (9) node (9) javascript (9) nginx (9) inteligencia-artificial (9) linux-tools (8) Architecture (8) github (7) ciencia (7) vue (7) jwt (6) vim (6) windows (6) arquitetura (6) nodejs (6) api (6) vscode (6) webservice (6) DevSecOps (5) servers (5) apache (5) macox (5) s3 (5) authentication (5) ia (5) reactnative (5) rest (5) wsl (4) Swoole (4) lets-encrypt (4) query (4) Raspberry (4) angularjs (4) inteligenciadedados (4) Padrao de design (4) artigo (4) google (4) npm (4) openai (4) Kubernetes (4) gitlab (4) opensource (4) mariadb (4) jenkins (4) autenticacao (4) shell (4) mongodb (4) angular (4) jobs (3) websocket (3) ssh (3) bash (3) hardware (3) tests (3) macos (3) web (2) db (3) politica (3) script (3) performance (3) js (3) mysqli (3) Black Hat (3) RabbitMQ (3) educacao (3) intel (3) CMS (2) sail (3) containers (3) json (3) authorization (3) phpswoole (3) ddd (3) blade (3) terminal (3) log (3) mac (3) fedora (3) seguranca (2) auth (2) cron (2) phpunit (2) kube (2) multiple_authen (2) policia (2) neovim (2) golang (2) noticias (2) livros (2) Transcribe (2) ElonMusk (2) redis (2) claude (2) ArchLinux (2) java (2) saude (1) JQuery (2) phpfpm (2) autorizacao (2) monitoring (2) laptop (2) gnome (2) powerbi (2) telefonia (2) nvm (2) imagick (2) maps (2) colors (2) Passport (2) webhook (2) microservices (2) Curisidades (2) Solid (2) zsh (2) Go (2) BigLinux (2) POO (2) LazyVim (2) gource (2) Python (2) Oauth2 (2) android (2) unix (2) magento (2) iot (2) ffmpeg (2) combustivel (2) security (2) bancodedados (2) tailwind (2) homeOffice (2) html (2) openswoole (2) artificialintelligence (2) paypal (1) microg (1) forcas armadas (1) militar (1) fullsta (1) smartphones (1) automacao (1) Monitor (1) zend (1) spaceship (1) PKCE (1) l2tp (1) Glacier (1) laraveloctane (1) Deus (1) binaural (1) gpt (1) bolsonaro (1) privacidade (1) linkedin (1) documentation (1) brain (1) adb (1) nvidia (1) host (1) ecommerce (1) c4-models (1) altadisponibilidade (1) octane (1) lucena (1) http (1) TypeScript (1) chatgpt (1) idiomas (1) eventdrive (1) uuid (1) restfull (1) aplicativo (1) optimization (1) mapas (1) Fetch (1) collections (1) RustLang (1) matematica (1) Filament (1) compactar (1) composer (1) scheduling (1) Asahi (1) pendrive (1) microservice (1) front (1) cor (1) auth (1) modelagemdedados (1) k8s (1) gasolina (1) wsl2 (1) csv (1) soap (1) piada (1) KubeCon (1) zorin-os (1) spring-boot (1) backup (1) playwright (1) Deepin (1) storage (1) benchmark (1) networking (1) Swoole (1) biologia (1) node-red (1) LETSENCRYPT (1) Grunt (1) Diagramas (1) boot (1) haru (1) dracula (1) TrabalhoEmEquipe (1) Brasil (1) queue (1) agi (1) llama (1) hotfix (1) economia (1) transcription (1) cache (1) Amazon (1) October (1) lumen (1) Hyperf (1) replication (1) faceapp (1) vala (1) cloudstack (1) rpi (1) apple (1) oracle (1) iode (1) ffaa (1) vpn (1) MeioAmbiente (1) firefox (1) flow (1) compression (1) athena (1) front (1) wine (1) covid19 (0) services (1) phpjasper (1) models (1) kali-linux (1) geojson (1) yarn (1) picpay (1) Monolith (1) banco (1) PNPM (1) Desenvolvedor (1) Structurizr (1) symfony (1) presenter (1) lider (1) guard (1) tensorflow (1) bootstrap (1) nuance (1) historia (1) dropbox (1) traefik (1) bug (1) akitando (1) llm (1) htm (1) transformers (1) cavalotroia (1) odd (1) m1 (1) Error (1) cinnamon (1) repmgr (1) federal (1) ruby (1) AppSec (1) orm (1) ArquiteturaDeSoftware (1) Passwordless (1) memcached (1) Jesus (1) flutter (1) Migration (1) workflow (1) cqrs (1) kitematic (1) geospacial (1) yeshua (1) data (1) sonarqube (1) Axios (1) pipelines (1) Mozilla (1) kvm (1) GitOps (1) sqlite (1) podcast (1) n8n (1) LaravelFilament (1) God (1) DesenvolvimentoProfissional (1) sw (1) bigtech (1) postgres (1) NoCookies (1) LeetCode (1) governancadedados (1) prf (1) nosql (1) Lideranca (1) Hackers (1) Bots (1) pytorch (1) nuxt (1) liquid (1) ec2 (1) transaction (1) c4 (1) rancher (1) algoritimo (1) Observability (1) Elasticsearch (1) translate (1) certbot (1) Oh My Zsh (1) ibm (1) escopos (1) usb (1) ckeditor (1) API_KEY_GOOGLE_MAPS (1) Manjaro (1) vicuna (1) coding (1) rust (1) markdown (1) JasperReports (1) Fibonacci (1) community (1) Samurai (1) payment (1) messaging (1) controllers (0) OOD (0)

New Articles



Get Latest Updates by Email