From 89de3c652199f6295f6fca9a49b014588feefc2d Mon Sep 17 00:00:00 2001 From: 0xff-dev Date: Wed, 9 Jul 2025 09:05:06 +0800 Subject: [PATCH] Add solution and test-cases for problem 3439 --- .../1.png | Bin 0 -> 9942 bytes .../2.png | Bin 0 -> 13568 bytes .../README.md | 55 +++++++++++++----- .../Solution.go | 25 +++++++- .../Solution_test.go | 23 ++++---- 5 files changed, 77 insertions(+), 26 deletions(-) create mode 100644 leetcode/3401-3500/3439.Reschedule-Meetings-for-Maximum-Free-Time-I/1.png create mode 100644 leetcode/3401-3500/3439.Reschedule-Meetings-for-Maximum-Free-Time-I/2.png diff --git a/leetcode/3401-3500/3439.Reschedule-Meetings-for-Maximum-Free-Time-I/1.png b/leetcode/3401-3500/3439.Reschedule-Meetings-for-Maximum-Free-Time-I/1.png new file mode 100644 index 0000000000000000000000000000000000000000..fbf27c6b37cb9b7d2abc215a3cee06c1c6e7c376 GIT binary patch literal 9942 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 literal 0 HcmV?d00001 diff --git a/leetcode/3401-3500/3439.Reschedule-Meetings-for-Maximum-Free-Time-I/2.png b/leetcode/3401-3500/3439.Reschedule-Meetings-for-Maximum-Free-Time-I/2.png new file mode 100644 index 0000000000000000000000000000000000000000..c533bdde39fb6305de6291c63230454338390ac6 GIT binary patch literal 13568 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 Zq^ [!WARNING|style:flat] -> This question is temporarily unanswered if you have good ideas. Welcome to [Create Pull Request PR](https://github.com/kylesliu/awesome-golang-algorithm) - ## Description +You are given an integer `eventTime` denoting the duration of an event, where the event occurs from time `t = 0` to time `t = eventTime`. + +You are also given two integer arrays `startTime` and `endTime`, each of length `n`. These represent the start and end time of `n` **non-overlapping** meetings, where the `ith` meeting occurs during the time `[startTime[i], endTime[i]]`. + +You can reschedule **at most** `k` meetings by moving their start time while maintaining the **same duration**, to **maximize** the **longest** continuous period of free time during the event. + +The **relative** order of all the meetings should stay the same and they should remain non-overlapping. + +Return the **maximum** amount of free time possible after rearranging the meetings. + +**Note** that the meetings can **not** be rescheduled to a time outside the event. + +**Example 1:** + +![1](./1.png) + +``` +Input: eventTime = 5, k = 1, startTime = [1,3], endTime = [2,5] -**Example 1:** +Output: 2 +Explanation: + +Reschedule the meeting at [1, 2] to [2, 3], leaving no meetings during the time [0, 2]. ``` -Input: a = "11", b = "1" -Output: "100" + +**Example 2:** + +![2](./2.png) + ``` +Input: eventTime = 10, k = 1, startTime = [0,2,9], endTime = [1,4,10] + +Output: 6 -## 题意 -> ... +Explanation: -## 题解 +Reschedule the meeting at [2, 4] to [1, 3], leaving no meetings during the time [3, 9]. +``` + +**Example 3:** -### 思路1 -> ... -Reschedule Meetings for Maximum Free Time I -```go ``` +Input: eventTime = 5, k = 2, startTime = [0,1,2,3,4], endTime = [1,2,3,4,5] + +Output: 0 +Explanation: + +There is no time during the event not occupied by meetings +``` ## 结语 diff --git a/leetcode/3401-3500/3439.Reschedule-Meetings-for-Maximum-Free-Time-I/Solution.go b/leetcode/3401-3500/3439.Reschedule-Meetings-for-Maximum-Free-Time-I/Solution.go index d115ccf5e..a4c2deeaf 100644 --- a/leetcode/3401-3500/3439.Reschedule-Meetings-for-Maximum-Free-Time-I/Solution.go +++ b/leetcode/3401-3500/3439.Reschedule-Meetings-for-Maximum-Free-Time-I/Solution.go @@ -1,5 +1,26 @@ package Solution -func Solution(x bool) bool { - return x +func Solution(eventTime int, k int, startTime []int, endTime []int) int { + n := len(startTime) + res := 0 + sum := make([]int, n+1) + for i := 0; i < n; i++ { + sum[i+1] = sum[i] + endTime[i] - startTime[i] + } + for i := k - 1; i < n; i++ { + var right int + if i == n-1 { + right = eventTime + } else { + right = startTime[i+1] + } + var left int + if i == k-1 { + left = 0 + } else { + left = endTime[i-k] + } + res = max(res, right-left-(sum[i+1]-sum[i-k+1])) + } + return res } diff --git a/leetcode/3401-3500/3439.Reschedule-Meetings-for-Maximum-Free-Time-I/Solution_test.go b/leetcode/3401-3500/3439.Reschedule-Meetings-for-Maximum-Free-Time-I/Solution_test.go index 14ff50eb4..74ef19c3c 100644 --- a/leetcode/3401-3500/3439.Reschedule-Meetings-for-Maximum-Free-Time-I/Solution_test.go +++ b/leetcode/3401-3500/3439.Reschedule-Meetings-for-Maximum-Free-Time-I/Solution_test.go @@ -9,31 +9,32 @@ import ( func TestSolution(t *testing.T) { // 测试用例 cases := []struct { - name string - inputs bool - expect bool + name string + eventTime, k int + startTime, endTime []int + expect int }{ - {"TestCase", true, true}, - {"TestCase", true, true}, - {"TestCase", false, false}, + {"TestCase1", 5, 1, []int{1, 3}, []int{2, 5}, 2}, + {"TestCase2", 10, 1, []int{0, 2, 9}, []int{1, 4, 10}, 6}, + {"TestCase3", 5, 2, []int{0, 1, 2, 3, 4}, []int{1, 2, 3, 4, 5}, 0}, } // 开始测试 for i, c := range cases { t.Run(c.name+" "+strconv.Itoa(i), func(t *testing.T) { - got := Solution(c.inputs) + got := Solution(c.eventTime, c.k, c.startTime, c.endTime) if !reflect.DeepEqual(got, c.expect) { - t.Fatalf("expected: %v, but got: %v, with inputs: %v", - c.expect, got, c.inputs) + t.Fatalf("expected: %v, but got: %v, with inputs: %v %v %v %v", + c.expect, got, c.eventTime, c.k, c.startTime, c.endTime) } }) } } -// 压力测试 +// 压力测试 func BenchmarkSolution(b *testing.B) { } -// 使用案列 +// 使用案列 func ExampleSolution() { }