From 04a11d20372951906b2ab61fa4bf916b9f03b71a Mon Sep 17 00:00:00 2001 From: kkunkka Date: Thu, 19 Jun 2025 17:25:58 +0800 Subject: [PATCH] kk --- .../java/com/dota/stack/_853/Solution.java | 36 +++++++++++++++++++ .../com/dota/stack/_901/StockSpanner.java | 24 +++++++++++++ 2 files changed, 60 insertions(+) create mode 100644 src/main/java/com/dota/stack/_853/Solution.java create mode 100644 src/main/java/com/dota/stack/_901/StockSpanner.java diff --git a/src/main/java/com/dota/stack/_853/Solution.java b/src/main/java/com/dota/stack/_853/Solution.java new file mode 100644 index 0000000..d386de6 --- /dev/null +++ b/src/main/java/com/dota/stack/_853/Solution.java @@ -0,0 +1,36 @@ +package com.dota.stack._853; + +import java.util.ArrayList; + +class Car { + int position; + int speed; + double res; + + public Car(int position, int speed, double res) { + this.position = position; + this.speed = speed; + this.res = res; + } +} + +class Solution { + public int carFleet(int target, int[] position, int[] speed) { + var list = new ArrayList(); + for (int i = 0; i < position.length; i++) { + list.add(new Car(position[i], speed[i], (double) (target - position[i]) / speed[i])); + } + + var res = 1; + list.sort((a, b) -> b.position - a.position); + + for (int i = 1; i < list.size(); i++) { + if (list.get(i - 1).res < list.get(i).res) { + res++; + } else { + list.get(i).res = list.get(i - 1).res; + } + } + return res; + } +} \ No newline at end of file diff --git a/src/main/java/com/dota/stack/_901/StockSpanner.java b/src/main/java/com/dota/stack/_901/StockSpanner.java new file mode 100644 index 0000000..c1ee199 --- /dev/null +++ b/src/main/java/com/dota/stack/_901/StockSpanner.java @@ -0,0 +1,24 @@ +package com.dota.stack._901; + +import java.util.Deque; +import java.util.LinkedList; + +record Node(int k, int v) { +} + +class StockSpanner { + Deque stack ; + + public StockSpanner() { + stack = new LinkedList<>(); + } + + public int next(int price) { + int sum = 1; + while(!stack.isEmpty() && stack.peekLast().k() <= price) { + sum += stack.removeLast().v(); + } + stack.addLast(new Node(price, sum)); + return sum; + } +}