cari
RumahJavajavaTutorialPadam semua elemen dari timbunan di Java

Delete all even elements from a stack in Java

Tutorial ini menunjukkan dua kaedah untuk menghapuskan nombor walaupun dari timbunan Java. Tumpukan, mematuhi prinsip terakhir (LIFO), memberikan cabaran unik untuk penapisan jenis ini. Teknik -teknik yang ditunjukkan di sini boleh disesuaikan dengan senario penapisan lain di luar hanya mengeluarkan nombor walaupun.

Masalah:

Diberi timbunan bilangan bulat, tulis program Java untuk menghapuskan semua nombor walaupun.

Contoh Input dan Output:

    input 1:
  • output 1: [1, 2, 3, 4, 5] [1, 3, 5]
  • input 2:
  • output 2: [1, 7, 3, 11, 9] (tidak ada nombor untuk dikeluarkan) [1, 7, 3, 11, 9] Pendekatan Penyelesaian
:

Kami akan meneroka dua pendekatan yang berbeza:

    Menggunakan timbunan tambahan:
  1. Kaedah ini menggunakan timbunan sementara untuk menyimpan nombor ganjil semasa melangkah melalui timbunan asal.

  2. Menggunakan rekursi:
  3. Pendekatan rekursif ini dengan cekap memproses timbunan, mengeluarkan nombor walaupun semasa panggilan rekursif.

  4. Kaedah 1: Stack Auxiliary

Pendekatan ini melibatkan langkah -langkah ini:

Buat sementara

(mis.,
    ).
  1. Stack Melangkah melalui timbunan asal, muncul setiap elemen. tempStack
  2. Jika elemen ganjil (periksa menggunakan pengendali modulo
  3. ), tolaknya ke
  4. .
  5. % Setelah timbunan asal kosong, elemen pemindahan dari tempStack kembali ke timbunan asal.
  6. Contoh kod CODE (Stack Auxiliary): tempStack

kerumitan masa dan ruang (timbunan tambahan):

import java.util.Stack;

public class RemoveEvenElements {
    public static void removeEven(Stack<Integer> stack) {
        Stack<Integer> tempStack = new Stack<>();
        while (!stack.isEmpty()) {
            int element = stack.pop();
            if (element % 2 != 0) {
                tempStack.push(element);
            }
        }
        while (!tempStack.isEmpty()) {
            stack.push(tempStack.pop());
        }
    }

    public static void main(String[] args) {
        Stack<Integer> stack = new Stack<>();
        stack.push(1);
        stack.push(2);
        stack.push(3);
        stack.push(4);
        stack.push(5);
        removeEven(stack);
        System.out.println(stack); // Output: [1, 3, 5]
    }
}

kerumitan masa: o (n) - kita melangkah melalui timbunan dua kali.

  • kerumitan ruang: o (n) - Kami menggunakan timbunan tambahan yang berpotensi sama dengan stack input.
  • Kaedah 2: Recursion
Penyelesaian rekursif ini dengan elegan mengendalikan penyingkiran nombor:

Kes asas: Jika timbunan kosong, kembali.

pop elemen atas.

    rekursif memanggil fungsi
  1. untuk memproses timbunan yang tinggal.
  2. Selepas panggilan rekursif, periksa sama ada elemen yang muncul adalah ganjil. Sekiranya, tolaknya kembali ke timbunan.
  3. Contoh Kod CODE (RECURSION): removeEven
kerumitan masa dan ruang (rekursi):

import java.util.Stack;

public class RemoveEvenElements {
    public static void removeEven(Stack<Integer> stack) {
        if (stack.isEmpty()) {
            return;
        }
        int element = stack.pop();
        removeEven(stack);
        if (element % 2 != 0) {
            stack.push(element);
        }
    }

    public static void main(String[] args) {
        Stack<Integer> stack = new Stack<>();
        stack.push(1);
        stack.push(2);
        stack.push(3);
        stack.push(4);
        stack.push(5);
        removeEven(stack);
        System.out.println(stack); // Output: [1, 3, 5]
    }
}
kerumitan masa:

o (n) - kita secara rekursif melintasi timbunan.

Kerumitan ruang:
    o (n) - Tumpukan panggilan rekursif dapat tumbuh hingga saiz timbunan input dalam kes terburuk.
  • Kesimpulan:
  • Kedua -dua kaedah secara berkesan mengeluarkan nombor walaupun dari timbunan. Pendekatan timbunan tambahan lebih mudah, sementara pendekatan rekursif menawarkan penyelesaian yang lebih ringkas dan berpotensi sedikit lebih efisien (bergantung kepada pengoptimuman JVM). Pilihan bergantung kepada keutamaan peribadi dan gaya pengekodan. Ingatlah bahawa teknik -teknik ini boleh disesuaikan dengan susunan penapis berdasarkan pelbagai kriteria.

Atas ialah kandungan terperinci Padam semua elemen dari timbunan di Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Bagaimanakah JVM mengendalikan perbezaan dalam sistem operasi API?Bagaimanakah JVM mengendalikan perbezaan dalam sistem operasi API?Apr 27, 2025 am 12:18 AM

JVM Mengendalikan Perbezaan API Sistem Operasi melalui JavanativeInterface (JNI) dan Perpustakaan Standard Java: 1. JNI membenarkan kod Java untuk memanggil kod tempatan dan terus berinteraksi dengan API Sistem Operasi. 2. Perpustakaan Standard Java menyediakan API bersatu, yang dipetakan secara dalaman kepada API sistem operasi yang berbeza untuk memastikan kod tersebut berjalan di seluruh platform.

Bagaimanakah modulariti yang diperkenalkan dalam kemerdekaan platform kesan Java 9?Bagaimanakah modulariti yang diperkenalkan dalam kemerdekaan platform kesan Java 9?Apr 27, 2025 am 12:15 AM

modularitydoesnotdirectlyaffectjava'splatformindected.java'splatformindectenceismaintybythejvm, butmodularityinfluencesapplicationstructureandManagement, indirectlyimpactingplatformindect.1) DeploymentandmentandmentweMbecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecombecom

Apakah bytecode, dan bagaimanakah ia berkaitan dengan kemerdekaan platform Java?Apakah bytecode, dan bagaimanakah ia berkaitan dengan kemerdekaan platform Java?Apr 27, 2025 am 12:06 AM

BytecodeinjavaistheintermediaterepresentationThateNableSplatformindant.1) javacodeiscompiledintobytecodestoredin.classfiles.2)

Mengapa Java dianggap sebagai bahasa bebas platform?Mengapa Java dianggap sebagai bahasa bebas platform?Apr 27, 2025 am 12:03 AM

JavaachievesplatformindependencethroughavavaVirtualMachine (JVM), yang mana -yexeCuteSbytecodeonanydeviceWIjvm.1)

Bagaimanakah antara muka pengguna grafik (GUI) menyajikan cabaran untuk kemerdekaan platform di Java?Bagaimanakah antara muka pengguna grafik (GUI) menyajikan cabaran untuk kemerdekaan platform di Java?Apr 27, 2025 am 12:02 AM

Kemerdekaan platform dalam pembangunan Javagui menghadapi cabaran, tetapi boleh ditangani dengan menggunakan swing, javafx, penampilan penyatuan, pengoptimuman prestasi, perpustakaan pihak ketiga dan ujian silang platform. Pembangunan Javagui bergantung pada AWT dan Swing, yang bertujuan untuk menyediakan konsistensi rentas platform, tetapi kesan sebenar berbeza dari sistem operasi ke sistem operasi. Penyelesaian termasuk: 1) Menggunakan Swing dan Javafx sebagai Toolkit GUI; 2) menyatukan penampilan melalui uimanager.setlookandfeel (); 3) mengoptimumkan prestasi untuk memenuhi platform yang berbeza; 4) menggunakan perpustakaan pihak ketiga seperti Apachepivot atau SWT; 5) Melaksanakan ujian silang platform untuk memastikan konsistensi.

Apakah aspek pembangunan Java yang bergantung kepada platform?Apakah aspek pembangunan Java yang bergantung kepada platform?Apr 26, 2025 am 12:19 AM

Javadevelopmentisnotentirelyplatform-independentduetoseveralfactors.1) jvmvariationsaffecperformanceandbehavioracrossdifferentos.2) nativelibrariesviajniintroduceplatform-specificiSsues.3)

Adakah terdapat perbezaan prestasi semasa menjalankan kod Java pada platform yang berbeza? Kenapa?Adakah terdapat perbezaan prestasi semasa menjalankan kod Java pada platform yang berbeza? Kenapa?Apr 26, 2025 am 12:15 AM

Kod Java akan mempunyai perbezaan prestasi apabila berjalan pada platform yang berbeza. 1) Strategi pelaksanaan dan pengoptimuman JVM adalah berbeza, seperti OracleJDK dan OpenJDK. 2) Ciri -ciri sistem operasi, seperti pengurusan memori dan penjadualan thread, juga akan menjejaskan prestasi. 3) Prestasi boleh ditingkatkan dengan memilih JVM yang sesuai, menyesuaikan parameter JVM dan pengoptimuman kod.

Apakah beberapa batasan kemerdekaan platform Java?Apakah beberapa batasan kemerdekaan platform Java?Apr 26, 2025 am 12:10 AM

Java'splatformindecthaslimitationscludingperformanceOverhead, VersionCompateIssues, cabaranwithnativelibraryintegration, platform-specificfeatures, danjvminstallation/penyelenggaraan.

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Muat turun versi mac editor Atom

Muat turun versi mac editor Atom

Editor sumber terbuka yang paling popular

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.

Dreamweaver Mac版

Dreamweaver Mac版

Alat pembangunan web visual

VSCode Windows 64-bit Muat Turun

VSCode Windows 64-bit Muat Turun

Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

Versi Mac WebStorm

Versi Mac WebStorm

Alat pembangunan JavaScript yang berguna