Masalah:
Diberi timbunan bilangan bulat, tulis program Java untuk menghapuskan semua nombor walaupun.
Contoh Input dan Output:
[1, 2, 3, 4, 5]
[1, 3, 5]
[1, 7, 3, 11, 9]
(tidak ada nombor untuk dikeluarkan)
[1, 7, 3, 11, 9]
Pendekatan Penyelesaian Kami akan meneroka dua pendekatan yang berbeza:
Pendekatan ini melibatkan langkah -langkah ini:
Buat sementara
(mis.,Stack
Melangkah melalui timbunan asal, muncul setiap elemen. tempStack
%
Setelah timbunan asal kosong, elemen pemindahan dari tempStack
kembali ke timbunan asal. 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.
Kes asas: Jika timbunan kosong, kembali.
pop elemen atas.
removeEven
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] } }
o (n) - kita secara rekursif melintasi timbunan.
Kerumitan ruang: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!