From 68e54cbd74330866d39b05460d4612be4424cae0 Mon Sep 17 00:00:00 2001 From: 0xff-dev Date: Sun, 8 Dec 2024 15:58:37 +0800 Subject: [PATCH] Add solution and test-cases for problem 2054 --- .../1.png | Bin 0 -> 4254 bytes .../2.png | Bin 0 -> 4101 bytes .../3.png | Bin 0 -> 5078 bytes .../README.md | 39 ++++++++---- .../Solution.go | 57 +++++++++++++++++- .../Solution_test.go | 14 ++--- 6 files changed, 88 insertions(+), 22 deletions(-) create mode 100644 leetcode/2001-2100/2054.Two-Best-Non-Overlapping-Events/1.png create mode 100644 leetcode/2001-2100/2054.Two-Best-Non-Overlapping-Events/2.png create mode 100644 leetcode/2001-2100/2054.Two-Best-Non-Overlapping-Events/3.png diff --git a/leetcode/2001-2100/2054.Two-Best-Non-Overlapping-Events/1.png b/leetcode/2001-2100/2054.Two-Best-Non-Overlapping-Events/1.png new file mode 100644 index 0000000000000000000000000000000000000000..071ca8c2740a3468bf99df08c5924a181e1ab300 GIT binary patch literal 4254 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 r;XPsH-D2z=`?ew)SEbgny0lBB!;vc; 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 L7KX(0Zb| [!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 a **0-indexed** 2D integer array of `events` where `events[i] = [startTimei, endTimei, valuei]`. The `ith` event starts at `startTimei` and ends at `endTimei`, and if you attend this event, you will receive a value of `valuei`. You can choose **at most two non-overlapping** events to attend such that the sum of their values is **maximized**. + +Return this **maximum** sum. + +Note that the start time and end time is **inclusive**: that is, you cannot attend two events where one of them starts and the other ends at the same time. More specifically, if you attend an event with end time `t`, the next event must start at or after `t + 1`. -**Example 1:** +**Example 1:** + +![1](./1.png) ``` -Input: a = "11", b = "1" -Output: "100" +Input: events = [[1,3,2],[4,5,2],[2,4,3]] +Output: 4 +Explanation: Choose the green events, 0 and 1 for a sum of 2 + 2 = 4. ``` -## 题意 -> ... +**Example 2:** -## 题解 +![2](./2.png) -### 思路1 -> ... -Two Best Non-Overlapping Events -```go +``` +Input: events = [[1,3,2],[4,5,2],[1,5,5]] +Output: 5 +Explanation: Choose event 2 for a sum of 5. ``` +**Example 3:** + +![3](./3.png) + +``` +Input: events = [[1,5,3],[1,5,1],[6,6,5]] +Output: 8 +Explanation: Choose events 0 and 2 for a sum of 3 + 5 = 8. +``` ## 结语 diff --git a/leetcode/2001-2100/2054.Two-Best-Non-Overlapping-Events/Solution.go b/leetcode/2001-2100/2054.Two-Best-Non-Overlapping-Events/Solution.go index d115ccf5e..6d652e630 100644 --- a/leetcode/2001-2100/2054.Two-Best-Non-Overlapping-Events/Solution.go +++ b/leetcode/2001-2100/2054.Two-Best-Non-Overlapping-Events/Solution.go @@ -1,5 +1,58 @@ package Solution -func Solution(x bool) bool { - return x +import "sort" + +type SegmentTreeNode2054 struct { + Left, Right, Max int + LeftChild, RightChild *SegmentTreeNode2054 +} + +func buildSegmentTree2054(nums [][]int, left, right int) *SegmentTreeNode2054 { + if left == right { + return &SegmentTreeNode2054{Left: left, Right: right, Max: nums[left][2]} + } + + mid := (left + right) / 2 + leftNode := buildSegmentTree2054(nums, left, mid) + rightNode := buildSegmentTree2054(nums, mid+1, right) + max := max(leftNode.Max, rightNode.Max) + + return &SegmentTreeNode2054{Left: left, Right: right, Max: max, LeftChild: leftNode, RightChild: rightNode} +} + +func queryMax2054(root *SegmentTreeNode2054, left, right int) int { + if root.Left >= left && root.Right <= right { + return root.Max + } + + if root.Right < left || root.Left > right { + return -1 + } + + return max(queryMax2054(root.LeftChild, left, right), queryMax2054(root.RightChild, left, right)) +} + +func Solution(events [][]int) int { + sort.Slice(events, func(i, j int) bool { + a, b := events[i], events[j] + if a[0] == b[0] { + return a[1] < b[1] + } + return a[0] < b[0] + }) + l := len(events) + + tree := buildSegmentTree2054(events, 0, l-1) + ans := 0 + for i, e := range events { + ans = max(ans, e[2]) + idx := sort.Search(l-i-1, func(ii int) bool { + return events[i+1+ii][0] > e[1] + }) + if idx == l-i-1 { + continue + } + ans = max(ans, e[2]+queryMax2054(tree, i+1+idx, l-1)) + } + return ans } diff --git a/leetcode/2001-2100/2054.Two-Best-Non-Overlapping-Events/Solution_test.go b/leetcode/2001-2100/2054.Two-Best-Non-Overlapping-Events/Solution_test.go index 14ff50eb4..c5381384c 100644 --- a/leetcode/2001-2100/2054.Two-Best-Non-Overlapping-Events/Solution_test.go +++ b/leetcode/2001-2100/2054.Two-Best-Non-Overlapping-Events/Solution_test.go @@ -10,12 +10,12 @@ func TestSolution(t *testing.T) { // 测试用例 cases := []struct { name string - inputs bool - expect bool + inputs [][]int + expect int }{ - {"TestCase", true, true}, - {"TestCase", true, true}, - {"TestCase", false, false}, + {"TestCase1", [][]int{{1, 3, 2}, {4, 5, 2}, {2, 4, 3}}, 4}, + {"TestCase2", [][]int{{1, 3, 2}, {4, 5, 2}, {1, 5, 5}}, 5}, + {"TestCase3", [][]int{{1, 5, 3}, {1, 5, 1}, {6, 6, 5}}, 8}, } // 开始测试 @@ -30,10 +30,10 @@ func TestSolution(t *testing.T) { } } -// 压力测试 +// 压力测试 func BenchmarkSolution(b *testing.B) { } -// 使用案列 +// 使用案列 func ExampleSolution() { }