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

目次
スタックを理解
問題聲明
2つの追加変數(shù)を使用
)を覚えるためです。新しい要素がメインスタックに入るたびに、最大値または最小値を大きくする場合は、
修正されたスタック構(gòu)造を使用します
結(jié)論
ホームページ Java &#&チュートリアル スタック內(nèi)の最大要素と最小要素を見つけるためのJavaプログラム

スタック內(nèi)の最大要素と最小要素を見つけるためのJavaプログラム

Feb 07, 2025 am 11:24 AM
java

Java program to find the maximum and minimum elements in a stack

スタックは、最後の最初の原則(LIFOとも呼ばれる)に従う基本的なデータ構(gòu)造です。整理機(jī)能呼び出しや操作の取り消しなど、スタックには多くのユースケースがあります。多くの場合、スタック內(nèi)の最大の要素と最小の要素を見つけるという問題に遭遇する可能性があり、この記事では、Javaを使用してこのタスクを達(dá)成するための複數(shù)の方法を?qū)g証します。

スタックを理解

スタックは、上部と呼ばれる一方の端でのみ操作を可能にする線形データ構(gòu)造です。主な操作には以下が含まれます:

  • プッシュ(プッシュ):スタックの上部に要素を追加します。
  • pop(pop):削除して、スタックの上部要素に戻ります。
  • ビュー(ピーク):スタックを削除せずに、スタックの上部要素を表示します。
  • isempty(isempty):スタックが空であるかどうかを確認(rèn)します。

問題聲明

目標(biāo)は、スタック內(nèi)の最大要素と最小要素を決定することです。スタックのLIFOの性質(zhì)を考えると、上部以外の要素に直接アクセスすることはできません。これには、最大値と最小値を追跡しながら、スタックを橫斷する必要があります。

2つの追加変數(shù)を使用

ここでは、2つの変數(shù)を使用して、それぞれ最小値と最大値を追跡します。スタックを反復(fù)し、各要素が処理されるときにこれらの変數(shù)を更新します。これは最も簡単な方法であり、最も時間のかかるスペースを消費(fèi)する方法です。

min max

output
import java.util.Stack;

public class MaxMinInStack {
    public static void main(String[] args) {
        Stack<Integer> stack = new Stack<>();
        stack.push(10);
        stack.push(20);
        stack.push(30);
        stack.push(5);
        stack.push(15);

        int[] result = findMaxMin(stack);
        System.out.println("最大元素: " + result[0]);
        System.out.println("最小元素: " + result[1]);
    }

    public static int[] findMaxMin(Stack<Integer> stack) {
        if (stack.isEmpty()) {
            throw new IllegalArgumentException("棧為空");
        }

        int max = Integer.MIN_VALUE;
        int min = Integer.MAX_VALUE;

        for (Integer element : stack) {
            if (element > max) {
                max = element;
            }
            if (element < min) {
                min = element;
            }
        }
        return new int[]{max, min};
    }
}
最大要素:30 最小要素:5

補(bǔ)助スタックを使用して

ここでは、ポップアップ操作を使用して、必要に応じて最小値と最大値を更新することにより、スタックを通過します。補(bǔ)助スタックは一時的に要素を保存し、これらの要素を元のスタックに復(fù)元します。

output
import java.util.Stack;

public class MaxMinInStack {
    public static void main(String[] args) {
        Stack<Integer> stack = new Stack<>();
        stack.push(10);
        stack.push(20);
        stack.push(30);
        stack.push(5);
        stack.push(15);

        int[] result = findMaxMinWithAuxiliaryStack(stack);
        System.out.println("最大元素: " + result[0]);
        System.out.println("最小元素: " + result[1]);
    }

    public static int[] findMaxMinWithAuxiliaryStack(Stack<Integer> stack) {
        if (stack.isEmpty()) {
            throw new IllegalArgumentException("棧為空");
        }

        Stack<Integer> tempStack = new Stack<>();
        int max = stack.peek();
        int min = stack.peek();

        while (!stack.isEmpty()) {
            int current = stack.pop();
            if (current > max) {
                max = current;
            }
            if (current < min) {
                min = current;
            }
            tempStack.push(current);
        }

        while (!tempStack.isEmpty()) {
            stack.push(tempStack.pop());
        }

        return new int[]{max, min};
    }
}
最大要素:30 最小要素:5

2つのスタックを使用してください

このメソッドは2つの追加スタックを使用します。1つは最大の要素(

)を覚えるために、もう1つは最小の要素(

)を覚えるためです。新しい要素がメインスタックに入るたびに、最大値または最小値を大きくする場合は、

または

にも配置します。 maxStackminStack maxStack minStack

output

最大要素:30 最小要素:5
import java.util.Stack;

public class MaxMinInStack {
    // ... (main method remains the same) ...

    public static int[] findMaxMinWithTwoStacks(Stack<Integer> stack) {
        Stack<Integer> maxStack = new Stack<>();
        Stack<Integer> minStack = new Stack<>();

        while (!stack.isEmpty()) {
            int current = stack.pop();
            if (maxStack.isEmpty() || current >= maxStack.peek()) {
                maxStack.push(current);
            }
            if (minStack.isEmpty() || current <= minStack.peek()) {
                minStack.push(current);
            }
        }
        return new int[]{maxStack.peek(), minStack.peek()};
    }
}

修正されたスタック構(gòu)造を使用します

スタック構(gòu)造は、最大値と最小値と通常のスタック要素自體に含まれるように変更されています。各要素は、値、現(xiàn)在の最大値、現(xiàn)在の最小値を含むペアとして保存されます。

output

最大要素:30 最小要素:5
import java.util.Stack;

public class MaxMinInStack {
    static class StackNode {
        int value;
        int currentMax;
        int currentMin;

        StackNode(int value, int currentMax, int currentMin) {
            this.value = value;
            this.currentMax = currentMax;
            this.currentMin = currentMin;
        }
    }

    public static void main(String[] args) {
        Stack<StackNode> stack = new Stack<>();
        push(stack, 10);
        push(stack, 20);
        push(stack, 30);
        push(stack, 5);
        push(stack, 15);

        int[] result = findMaxMinWithModifiedStack(stack);
        System.out.println("最大元素: " + result[0]);
        System.out.println("最小元素: " + result[1]);
    }

    public static void push(Stack<StackNode> stack, int value) {
        int max = stack.isEmpty() ? value : Math.max(value, stack.peek().currentMax);
        int min = stack.isEmpty() ? value : Math.min(value, stack.peek().currentMin);
        stack.push(new StackNode(value, max, min));
    }

    public static int[] findMaxMinWithModifiedStack(Stack<StackNode> stack) {
        if (stack.isEmpty()) {
            throw new IllegalArgumentException("棧為空");
        }

        StackNode topNode = stack.peek();
        return new int[]{topNode.currentMax, topNode.currentMin};
    }
}

結(jié)論

スタック內(nèi)の最大の要素と最小の要素を探すことは、それぞれに利點(diǎn)と短所を備えたさまざまな方法で解決できます。示されている方法には、追加の変數(shù)、補(bǔ)助スタックの使用、最大値と最小値のための個別のスタックの管理、またはスタック自體の構(gòu)造の変更が含まれます。

各テクノロジーは、スタックアイテムにアクセスまたは保存する特定の方法を提供します。これにより、メモリの制限、パフォーマンス要件、データの整合性要件に基づいて特定の狀況に適しています。これらの方法を理解して適用することで、開発者がJavaのスタックを効果的に処理し、アプリケーションを特定の狀況に最適にすることができます。

以上がスタック內(nèi)の最大要素と最小要素を見つけるためのJavaプログラムの詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國語 Web サイトの他の関連記事を參照してください。

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

ホット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

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

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Java Synchronizersの理解:セマフォ、CountDownLatch Java Synchronizersの理解:セマフォ、CountDownLatch Jul 16, 2025 am 02:40 AM

セマフォは、リソースプールの管理と流量制限シナリオに適した、同時アクセスの數(shù)を制御するために使用され、取得と解放による制御許可があります。 CountDownLatchは、複數(shù)のスレッド操作が完了するのを待つために使用され、メインスレッドが子スレッドタスクを調(diào)整するのに適しています。 1.セマフォは、指定された數(shù)のライセンスを初期化し、公正および非染色モードをサポートし、使用する場合は、リリースを最終的にブロックに配置して、デッドロックを避ける必要があります。 2。CountDownLatchは、カウントを初期化し、カウントダウンをコールしてカウントを減らし、カウントがゼロに戻るまでブロックを待ち、リセットできません。 3。要件に従って選択:セマフォを使用して同時性を制限し、すべての完了がカウントダウンを使用するのを待ちます

Pythonの生成シーケンスは、キーワードを生成します Pythonの生成シーケンスは、キーワードを生成します Jul 16, 2025 am 04:50 AM

利回りキーワードは、ジェネレーターの作成、需要のある値を生成し、メモリを保存するために使用されます。 1.リターンを交換して、フィボナッチシーケンスなどの有限シーケンスを生成します。 2。ナチュラルシーケンスなどの無限シーケンスを?qū)g裝します。 3.ビッグデータまたはファイルの読み取りを処理し、メモリオーバーフローを避けるために線ごとにそれらを処理します。 4.ジェネレーターは1回しか通過できず、next()またはloopで呼び出すことができることに注意してください。

サーバー側(cè)のテンプレートインジェクションのJavaセキュリティ サーバー側(cè)のテンプレートインジェクションのJavaセキュリティ Jul 16, 2025 am 01:15 AM

サーバー側(cè)のテンプレートインジェクション(SSTI)の防止には、次の4つの側(cè)面が必要です。1。メソッド呼び出しの無効化やクラスの負(fù)荷の制限など、セキュリティ構(gòu)成を使用します。 2.ユーザー入力はテンプレートコンテンツとして回避し、可変交換のみを避け、入力を厳密に検証します。 3.小石、口ひげ、レンダリングコンテキストなどのサンドボックス環(huán)境を採用します。 4.従屬バージョンを定期的に更新し、コードロジックを確認(rèn)して、テンプレートエンジンが合理的に構(gòu)成されていることを確認(rèn)し、ユーザー制御可能なテンプレートのためにシステムが攻撃されないようにします。

高度なJavaセキュリティマネージャーの構(gòu)成 高度なJavaセキュリティマネージャーの構(gòu)成 Jul 16, 2025 am 01:59 AM

Java Security Managerの構(gòu)成の中心的な目標(biāo)は、コード許可を制御し、恵まれない操作を防ぎ、通常の機(jī)能操作を確保することです。特定の手順は次のとおりです。1。java.securityファイルのsecurity.managerの設(shè)定を変更し、-djava.security.policyを使用してセキュリティマネージャーを有効にします。 2.ポリシーファイルを記述するときは、セキュリティリスクを回避するために、コードベースと署名プロパティを明確にし、FilePermission、SocketPermissionなどのアクセス許可を正確に設(shè)定する必要があります。 3.一般的な問題:クラスの読み込みが失敗した場合、declassの許可を追加する必要があり、反射が制限されている必要があります。反映する必要があります。

変數(shù)変數(shù)の魔法 変數(shù)変數(shù)の魔法 Jul 16, 2025 am 03:26 AM

VariableVariablesは、変數(shù)値を別の変數(shù)名として使用するPHPの機(jī)能です。 $$ varを使用して、変數(shù)への動的アクセスを?qū)g現(xiàn)し、フォーム入力をプロセスし、柔軟な構(gòu)成構(gòu)造を構(gòu)築します。たとえば、$ name = "age";エコー$$名は、$ ageの出力値に相當(dāng)します。一般的な使用法のシナリオには、次のものが含まれます。1。$ {$ type .'_ info '}などの変數(shù)への動的アクセス、條件に応じて異なる変數(shù)を選択できます。 2。フォーム入力を処理するときに値を自動的に割り當(dāng)てますが、セキュリティリスクに注意を払う必要があります。 3.柔軟な構(gòu)成構(gòu)造を構(gòu)築し、文字列名を介して対応する値を取得します。それを使用する場合、コードメンテナンス、競合の命名、デバッグの困難に注意を払う必要があります。それだけをお勧めします

基本的なPHP構(gòu)文の調(diào)査 基本的なPHP構(gòu)文の調(diào)査 Jul 17, 2025 am 04:11 AM

基本的なPHP構(gòu)文には次のものが含まれます。1。ラッピングコードを使用します。 2。エコーまたは印刷を使用してコンテンツを出力します。エコーは複數(shù)のパラメーターをサポートします。 3.変數(shù)は、$から始めるタイプを宣言する必要はありません。一般的なタイプには、文字列、整數(shù)、浮動小數(shù)點(diǎn)數(shù)、ブール膜、アレイ、オブジェクトが含まれます。これらの重要なポイントをマスターすると、PHP開発を迅速に開始できます。

PHP変數(shù)タイプの理解 PHP変數(shù)タイプの理解 Jul 17, 2025 am 04:12 AM

PHPには8つの変數(shù)タイプがあり、一般的に使用される整數(shù)、フロート、ストリング、ブール、アレイ、オブジェクト、nullおよびリソースが含まれます。変數(shù)タイプを表示するには、getType()またはis_type()シリーズ関數(shù)を使用します。 PHPは自動的にタイプを変換しますが、===を使用してキーロジックを厳密に比較することをお勧めします。手動変換は、(int)、(文字列)などの構(gòu)文に使用できますが、情報が失われる可能性があることに注意してください。

PHPファイルの理解 PHPファイルの理解 Jul 17, 2025 am 04:13 AM

PHPファイルは、動的なWeb開発に使用されるサーバーサイドスクリプト言語ファイルです。フォームデータを処理し、データベースに接続し、動的コンテンツを生成し、アクセス権を制御できます。 .phpで終了し、コードはサーバーで実行された後、ブラウザに結(jié)果を返します。 PHPファイルを?qū)g行するには、XAMPPなどのローカルサーバー環(huán)境をインストールし、ファイルをサーバーディレクトリに配置し、ブラウザからアクセスする必要があります。 PHPは通常、HTMLと混合されます。學(xué)習(xí)する前に、HTML、CSS、JavaScript、および基本的なプログラミングの概念を習(xí)得することをお勧めします。もっと練習(xí)してすぐに始めましょう。

See all articles