設備価格

制限時間:1000ms

メモリ制限:256M

トピックの説明:

  Xiaoqingはゲームをしたり、機器の市場価格を観察したりするのが好きですが、機器の価格は毎日固定されているわけではありません。毎日の機器価格リストに基づいてリストを再生成してください。対応するポジションの出力は次のようになります。より高い機器価格を監視するには、少なくとも待機日数。それでもアイテムの価格が上がらない場合は、代わりに0を使用してください。

説明を入力してください:

価格配列

出力の説明:

観察する日の配列

例:

例1

入力

73,74,75,71,69,72,76,73

出力

1,1,4,2,1,1,0,0

例2

入力

30,40,50,60

出力

1,1,1,0

ヒント

1 <= priceList.length <= 105

30 <= priceList [i] <= 100

ブルートフォースクラッキングは半分のポイントを取得します

ケース分析:

 この質問は主にスタック

 メソッドstack.peek()があります:最上位の要素に戻ることができますが、最上位の要素は削除されません

アイデア:

  1. 配列を開いて日数を保存します

  2. dequeを開く

  3. 最初の要素の添え字がスタックにプッシュされ、後のサイズstack[进栈的坐标]とされstack[栈顶坐标]ます。stackスタック、days配列を更新し、日数の差を記録して、スタックの最上位要素(pop())(つまり、より小さい場合 stack[进栈的]は削除し、より大きい場合は押し込み stack[进栈的]ますstack[进栈的]

デモ
ここに画像の説明を挿入

コード:

package 装备价格;

import java.util.Deque;
import java.util.LinkedList;
import java.util.Scanner;

/**
 * @author 江七
 * @version 1.0
 * @date 2021/9/30 14:39
 */
public class Main {
    
    
    public static void main(String[] args) {
    
    
        // 如果有其他情况需要判断 可修改示例代码
        Scanner cin = new Scanner(System.in);
        String str1 = cin.next();
        String[] split1 = str1.split(",");
        int[] arr = new int[split1.length];
        for (int i = 0; i < split1.length; i++) {
    
    
            arr[i] = Integer.parseInt(split1[i]);
        }
        int[] dayArr = dailyPrice(arr);
        String result = "";
        for (int day : dayArr) {
    
    
            result += day + ",";
        }
        System.out.println(result.substring(0, result.length() - 1));
    }

    // 请补齐方法
    public static int[] dailyPrice(int[] priceArray) {
    
    
        Stack<Integer> stack = new Stack<>(); //使用
        int length = priceArray.length;
        int[] res = new int[length];
        for(int i=0;i < length;i++){
    
    
            while(stack.size()!=0 && priceArray[stack.peek()] < priceArray[i]){
    
    
                res[stack.peek()] = i-stack.pop();
            }
            stack.push(i);
        }
        return res;
    }
}

実装のスクリーンショット:

おすすめ

転載: blog.csdn.net/m0_46502538/article/details/120566648