From ea77084c07793f4d4b62b29a1f12ba58309776c5 Mon Sep 17 00:00:00 2001 From: Cool <747682928@qq.com> Date: Tue, 1 Oct 2024 14:01:45 +0800 Subject: [PATCH] =?UTF-8?q?2024/10/01=20=E4=BB=8A=E6=97=A5=E4=B8=8E?= =?UTF-8?q?=E6=98=A8=E6=97=A5=E6=AF=8F=E6=97=A5=E4=B8=80=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../LeetCode20241001.java | 39 ++++++++++++ .../one_question_per_day/SeatManager.java | 61 +++++++++++++++++++ 2 files changed, 100 insertions(+) create mode 100644 src/main/java/com/cool/one_question_per_day/LeetCode20241001.java create mode 100644 src/main/java/com/cool/one_question_per_day/SeatManager.java diff --git a/src/main/java/com/cool/one_question_per_day/LeetCode20241001.java b/src/main/java/com/cool/one_question_per_day/LeetCode20241001.java new file mode 100644 index 0000000..5af6e93 --- /dev/null +++ b/src/main/java/com/cool/one_question_per_day/LeetCode20241001.java @@ -0,0 +1,39 @@ +package com.cool.one_question_per_day; + +/** + * Created with IntelliJ IDEA. + * + * @Author: Cool + * @Date: 2024/10/01/13:30 + * DayNumber 1 + * Hard 2 + * Level 7 + * Score 1786 + * @Description 983. 最低票价 + */ +public class LeetCode20241001 { + public int mincostTickets(int[] days, int[] costs) { + int lastDay = days[days.length - 1]; + boolean[] isTravel = new boolean[lastDay + 1]; + for (int d : days) { + isTravel[d] = true; + } + int[] memo = new int[lastDay + 1]; + return dfs(lastDay, isTravel, costs, memo); + } + + private int dfs(int i, boolean[] isTravel, int[] costs, int[] memo) { + if (i <= 0) { + return 0; + } + if (memo[i] > 0) { // 之前计算过 + return memo[i]; + } + if (!isTravel[i]) { + return memo[i] = dfs(i - 1, isTravel, costs, memo); + } + return memo[i] = Math.min(dfs(i - 1, isTravel, costs, memo) + costs[0], + Math.min(dfs(i - 7, isTravel, costs, memo) + costs[1], + dfs(i - 30, isTravel, costs, memo) + costs[2])); + } +} diff --git a/src/main/java/com/cool/one_question_per_day/SeatManager.java b/src/main/java/com/cool/one_question_per_day/SeatManager.java new file mode 100644 index 0000000..830acc6 --- /dev/null +++ b/src/main/java/com/cool/one_question_per_day/SeatManager.java @@ -0,0 +1,61 @@ +package com.cool.one_question_per_day; + +import java.util.Arrays; +import java.util.PriorityQueue; + +/** + * Created with IntelliJ IDEA. + * + * @Author: Cool + * @Date: 2024/09/30/20:24 + * DayNumber 3 + * Level 3 + * Score 1429 + * Hard 2 + * @link https://leetcode.cn/problems/seat-reservation-manager/description/?envType=daily-question&envId=2024-09-30 + * @Description 1845. 座位预约管理系统 + */ +public class SeatManager { + private final PriorityQueue available = new PriorityQueue<>(); + private int seats; + + public SeatManager(int n) { + } + + public int reserve() { + if (!available.isEmpty()) { // 有空出来的椅子 + return available.poll(); // 坐编号最小的 + } + return ++seats; // 添加一把新的椅子 + } + + public void unreserve(int seatNumber) { + available.add(seatNumber); // 有人离开了椅子 + } + + +// boolean[] manager; +// int minIndex = 0; +// +// public SeatManager(int n) { +// manager = new boolean[n]; +// Arrays.fill(manager, true); +// } +// +// public int reserve() { +// if (minIndex < manager.length) { +// while (!manager[minIndex]) { +// Q +// minIndex++; +// } +// manager[minIndex++] = false; +// } +// return minIndex; +// } +// +// public void unreserve(int seatNumber) { +// manager[seatNumber - 1] = true; +// minIndex = Math.min(minIndex, seatNumber - 1); +// } + +}