Rumah > Java > javaTutorial > Padam semua elemen dari timbunan di Java

Padam semua elemen dari timbunan di Java

Patricia Arquette
Lepaskan: 2025-02-07 11:32:09
asal
284 orang telah melayarinya

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]
    }
}
Salin selepas log masuk

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]
    }
}
Salin selepas log masuk
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!

Label berkaitan:
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Isu terkini
Bolehkah java digunakan sebagai bahagian belakang web?
daripada 1970-01-01 08:00:00
0
0
0
Tidak dapat memasang java
daripada 1970-01-01 08:00:00
0
0
0
Pasang JAVA
daripada 1970-01-01 08:00:00
0
0
0
Bagaimanakah php melaksanakan penyulitan sha1 java?
daripada 1970-01-01 08:00:00
0
0
0
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan