国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

ホームページ Java &#&チュートリアル Javaのスタックからすべての要素を削除します

Javaのスタックからすべての要素を削除します

Feb 07, 2025 am 11:32 AM
java

Delete all even elements from a stack in Java

このチュートリアルでは、Javaスタックから均等數(shù)を排除する2つの方法を示しています。 最後のファーストアウト(LIFO)の原則に準拠したスタックは、このタイプのフィルタリングに対するユニークな課題を提示します。 ここに示す手法は、偶數(shù)を削除するだけでなく、他のフィルタリングシナリオに適応できます。

問題:

整數(shù)のスタックを與えられて、すべての偶數(shù)を削除するためにJavaプログラムを書いてください。

入力と出力の例:

    入力1:
  • 出力1:[1, 2, 3, 4, 5] [1, 3, 5]
  • 入力2:
  • output 2:[1, 7, 3, 11, 9](均一な數(shù)字は削除されません) [1, 7, 3, 11, 9]
ソリューションアプローチ:

2つの異なるアプローチを調べます:

  1. 補助スタックを使用してください:

    この方法は、オリジナルのスタックを繰り返しながら奇數(shù)を保存するために一時的なスタックを使用します。

  2. 再帰の使用:

    この再帰アプローチは、スタックを効率的に処理し、再帰通話中に偶數(shù)を削除します。

  3. メソッド1:補助スタック

このアプローチには、これらの手順が含まれます

一時的な

(例えば、

)を作成します。
  1. 元のスタックを繰り返し、各要素をポップします。Stack tempStack要素が奇數(shù)の場合(Modulo演算子を使用して
  2. を使用してチェック)、
  3. 。
  4. に押します
  5. 元のスタックが空になったら、%から元のスタックに戻る要素を転送します。 tempStack
  6. コードの例(補助スタック):tempStack

時間と空間の複雑さ(補助スタック):

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]
    }
}

時間の複雑さ:o(n) - スタックを2回繰り返します。

    スペースの複雑さ:
  • o(n) - 入力スタックと同じサイズの潛在的に同じサイズの補助スタックを使用します。
  • メソッド2:再帰
  • この再帰ソリューションは、偶數(shù)の削除をエレガントに処理します:

ベースケース:スタックが空の場合は、戻ります。 上部の要素をポップします。

殘りのスタックを処理するために

関數(shù)を再帰的に呼び出します。
    再帰コールの後、ポップされた要素が奇妙であるかどうかを確認します。もしそうなら、それをスタックに押し戻します。
  1. コードの例(再帰):
  2. removeEven
  3. 時間と空間の複雑さ(再帰):

時間の複雑さ:
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) - スタックを再帰的に橫斷します。

スペースの複雑さ:

o(n) - 再帰コールスタックは、最悪の場合に入力スタックのサイズに成長できます。
  • 結論:
  • 両方の方法は、スタックから偶數(shù)の數(shù)値を効果的に削除します。補助スタックアプローチはより簡単ですが、再帰的アプローチはより簡潔で潛在的にわずかに効率的なソリューションを提供します(JVMの最適化に応じて)。 選択は、個人的な好みとコーディングスタイルに依存します。 これらの手法は、さまざまな基準に基づいてスタックをフィルタリングするように適合させることができることを忘れないでください。

以上がJavaのスタックからすべての要素を削除しますの詳細內(nèi)容です。詳細については、PHP 中國語 Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當する法的責任を負いません。盜作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中國語版

SublimeText3 中國語版

中國語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Javaのマップを反復する方法は? Javaのマップを反復する方法は? Jul 13, 2025 am 02:54 AM

Javaにはマップを通過する3つの一般的な方法があります。1。エントリセットを使用してキーと値を同時に取得します。これは、ほとんどのシナリオに適しています。 2。キーセットまたは値をそれぞれキーまたは値を通過する。 3. Java8のForeachを使用して、コード構造を簡素化します。 EntrySetは、すべてのキー値ペアを含むセットを返し、各ループはキーと値に頻繁にアクセスするのに適したMap.entryオブジェクトを取得します。キーまたは値のみが必要な場合は、それぞれkeyset()またはvalues()を呼び出すことができます。または、キーを橫斷するときにmap.get(key)を介して値を取得できます。 Java 8はForeachを使用できます((key、value) - &gt

Javaオプションの例 Javaオプションの例 Jul 12, 2025 am 02:55 AM

オプションは、意図を明確に表現(xiàn)し、ヌルの判斷のコードノイズを減らすことができます。 1. optional.ofnullableは、nullオブジェクトに対処する一般的な方法です。たとえば、マップから値を取得する場合、Orelseを使用してデフォルト値を提供できるため、ロジックはより明確かつ簡潔になります。 2.チェーンコールマップを使用してネストされた値を達成してNPEを安全に回避し、リンクが無効である場合はデフォルト値を返す場合は自動的に終了します。 3.フィルターは條件付きフィルタリングに使用でき、その後の操作は條件が満たされた場合にのみ実行され続けます。そうしないと、軽量のビジネス判斷に適したOrelseに直接ジャンプします。 4.基本的なタイプや単純なロジックなど、複雑さを高めるなど、オプションを過剰使用することはお勧めしません。一部のシナリオはNUに直接戻ります。

Javaの比較対Comparator Javaの比較対Comparator Jul 13, 2025 am 02:31 AM

Javaでは、Defaultのデフォルトソートルールを內(nèi)部的に定義するためにAcparableが使用され、コンパレータを使用して複數(shù)のソートロジックを外部から定義します。 1.Comparableは、クラス自體によって実裝されるインターフェイスです。比較()メソッドを書き換えることにより、自然な順序を定義します。弦や整數(shù)など、固定および最も一般的に使用されるソートメソッドを備えたクラスに適しています。 2。Comparatorは、同じクラスに複數(shù)の並べ替え方法が必要な狀況に適した、Compare()メソッドを介して実裝された外部定義の機能インターフェイスであり、クラスソースコードを変更できない、またはソートロジックが変更されることが多い場合があります。 2つの違いは、比較可能がソートロジックを定義するだけで、クラス自體を変更する必要があることですが、比較して

java.io.notserializableExceptionを修正する方法は? java.io.notserializableExceptionを修正する方法は? Jul 12, 2025 am 03:07 AM

java.io.notserializableExceptionに遭遇するためのコアワークアウンドは、シリアル化する必要があるすべてのクラスがシリアル化可能なインターフェイスを実裝し、ネストされたオブジェクトのシリアル化サポートを確認することです。 1.メインクラスに機器を追加する可能性のあるものを追加します。 2.クラス內(nèi)の対応するカスタムフィールドのクラスも、シリアル化可能なものを実裝していることを確認します。 3.一時的に使用して、シリアル化する必要のないフィールドをマークする。 4.コレクションまたはネストされたオブジェクトの非シリアル化されたタイプを確認します。 5.どのクラスがインターフェイスを実裝していないかを確認します。 6.キーデータの保存やシリアル化可能な中間構造の使用など、変更できないクラスの交換設計を検討します。 7.変更を検討してください

Javaのキャラクターエンコーディングの問題を処理する方法は? Javaのキャラクターエンコーディングの問題を処理する方法は? Jul 13, 2025 am 02:46 AM

Javaのキャラクターエンコーディングの問題に対処するために、重要なのは、各ステップで使用されるエンコードを明確に指定することです。 1.テキストを読み書きするときは常にエンコードを指定し、inputstreamreaderとoutputStreamWriterを使用し、明示的な文字セットを渡して、システムのデフォルトエンコードに依存しないようにします。 2.ネットワーク境界で文字列を処理するときに両端が一貫していることを確認し、正しいコンテンツタイプのヘッダーを設定し、ライブラリでエンコードを明示的に指定します。 3. string.getBytes()およびNewString(byte [])を注意して使用し、プラットフォームの違いによって引き起こされるデータの破損を避けるために、常に手動でstardantcharsets.utf_8を指定します。要するに、

Javaメソッドリファレンスが説明されています Javaメソッドリファレンスが説明されています Jul 12, 2025 am 02:59 AM

メソッドリファレンスは、JavaでのLambda式の執(zhí)筆を簡素化する方法であり、コードをより簡潔にします。これは新しい構文ではなく、機能的インターフェイスのコンテキストに適したJava 8によって導入されたLambda式への近道です。コアは、既存のメソッドを関數(shù)インターフェイスの実裝として直接使用することです。たとえば、system.out :: printlnはs-> system.out.println(s)に相當します。メソッド參照には4つの主要な形式があります。1。靜的メソッドリファレンス(className :: staticMethodName); 2。インスタンスメソッド參照(特定のオブジェクトへのバインディング、Instance :: MethodName); 3。

JavaScriptデータ型:プリミティブ対參照 JavaScriptデータ型:プリミティブ対參照 Jul 13, 2025 am 02:43 AM

JavaScriptデータ型は、プリミティブタイプと參照タイプに分割されます。プリミティブタイプには、文字列、數(shù)字、ブール、ヌル、未定義、シンボルが含まれます。値は不変であり、コピーは値を割り當てるときにコピーされるため、互いに影響を與えません。オブジェクト、配列、関數(shù)などの參照タイプはメモリアドレスを保存し、同じオブジェクトを指す変數(shù)は互いに影響します。 TypeofとInstanceOFを使用してタイプを決定できますが、TypeOfNullの歴史的な問題に注意してください。これらの2種類の違いを理解することは、より安定した信頼性の高いコードを書くのに役立ちます。

JavaでJsonを解析する方法は? JavaでJsonを解析する方法は? Jul 11, 2025 am 02:18 AM

JavaでJSONを解析するには、Jackson、GSON、またはorg.jsonを使用する3つの一般的な方法があります。 1.ジャクソンは、パフォーマンスと包括的な機能を備えたほとんどのプロジェクトに適しており、オブジェクトとJSON文字列間の変換と注釈マッピングをサポートしています。 2。GSONは、Androidプロジェクトや軽量のニーズにより適しており、使いやすいですが、複雑な構造と高性能シナリオの処理がわずかに劣っています。 3.org.jsonは、単純なタスクや小さなスクリプトに適しており、柔軟性とタイプの安全性がないため、大規(guī)模なプロジェクトにはお勧めしません。選択は、実際のニーズに基づいて決定されるべきです。

See all articles