From 5bfd02bd5f2fbc84278e740611f52836f6088c40 Mon Sep 17 00:00:00 2001 From: 0xff-dev Date: Thu, 26 Dec 2024 22:11:35 +0800 Subject: [PATCH] Add solution and test-cases for problem 986 --- .../0986.Interval-List-Intersections/1.png | Bin 0 -> 31457 bytes .../README.md | 31 +++++++++--------- .../Solution.go | 28 ++++++++++++++-- .../Solution_test.go | 19 +++++------ 4 files changed, 51 insertions(+), 27 deletions(-) create mode 100644 leetcode/901-1000/0986.Interval-List-Intersections/1.png diff --git a/leetcode/901-1000/0986.Interval-List-Intersections/1.png b/leetcode/901-1000/0986.Interval-List-Intersections/1.png new file mode 100644 index 0000000000000000000000000000000000000000..72102be2ebfc426d3490a05052e97fb16730ad59 GIT binary patch literal 31457 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 literal 0 HcmV?d00001 diff --git a/leetcode/901-1000/0986.Interval-List-Intersections/README.md b/leetcode/901-1000/0986.Interval-List-Intersections/README.md index 832e30d99..40b4ea909 100644 --- a/leetcode/901-1000/0986.Interval-List-Intersections/README.md +++ b/leetcode/901-1000/0986.Interval-List-Intersections/README.md @@ -1,28 +1,29 @@ # [986.Interval List Intersections][title] -> [!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 two lists of closed intervals, `firstList` and `secondList`, where `firstList[i] = [starti, endi]` and `secondList[j] = [startj, endj]`. Each list of intervals is pairwise **disjoint** and in **sorted order**. -**Example 1:** +Return the intersection of these two interval lists. -``` -Input: a = "11", b = "1" -Output: "100" -``` +A **closed interval** `[a, b]` (with `a <= b`) denotes the set of real numbers `x` with `a <= x <= b`. + +The **intersection** of two closed intervals is a set of real numbers that are either empty or represented as a closed interval. For example, the intersection of `[1, 3]` and `[2, 4]` is `[2, 3]`. -## 题意 -> ... +**Example 1:** -## 题解 +![1](./1.png) -### 思路1 -> ... -Interval List Intersections -```go ``` +Input: firstList = [[0,2],[5,10],[13,23],[24,25]], secondList = [[1,5],[8,12],[15,24],[25,26]] +Output: [[1,2],[5,5],[8,10],[15,23],[24,24],[25,25]] +``` + +**Example 2:** +``` +Input: firstList = [[1,3],[5,9]], secondList = [] +Output: [] +``` ## 结语 diff --git a/leetcode/901-1000/0986.Interval-List-Intersections/Solution.go b/leetcode/901-1000/0986.Interval-List-Intersections/Solution.go index d115ccf5e..0cc9153f6 100644 --- a/leetcode/901-1000/0986.Interval-List-Intersections/Solution.go +++ b/leetcode/901-1000/0986.Interval-List-Intersections/Solution.go @@ -1,5 +1,29 @@ package Solution -func Solution(x bool) bool { - return x +func Solution(firstList [][]int, secondList [][]int) [][]int { + la, lb := len(firstList), len(secondList) + if la == 0 || lb == 0 { + return nil + } + a, b := 0, 0 + ans := make([][]int, 0) + for a < la && b < lb { + af, as := firstList[a][0], firstList[a][1] + bf, bs := secondList[b][0], secondList[b][1] + if af > bs { + b++ + continue + } + if bf > as { + a++ + continue + } + ans = append(ans, []int{max(af, bf), min(as, bs)}) + if bs > as { + a++ + } else { + b++ + } + } + return ans } diff --git a/leetcode/901-1000/0986.Interval-List-Intersections/Solution_test.go b/leetcode/901-1000/0986.Interval-List-Intersections/Solution_test.go index 14ff50eb4..29e4ed61e 100644 --- a/leetcode/901-1000/0986.Interval-List-Intersections/Solution_test.go +++ b/leetcode/901-1000/0986.Interval-List-Intersections/Solution_test.go @@ -10,30 +10,29 @@ func TestSolution(t *testing.T) { // 测试用例 cases := []struct { name string - inputs bool - expect bool + f, s [][]int + expect [][]int }{ - {"TestCase", true, true}, - {"TestCase", true, true}, - {"TestCase", false, false}, + {"TestCase1", [][]int{{0, 2}, {5, 10}, {13, 23}, {24, 25}}, [][]int{{1, 5}, {8, 12}, {15, 24}, {25, 26}}, [][]int{{1, 2}, {5, 5}, {8, 10}, {15, 23}, {24, 24}, {25, 25}}}, + {"TestCase2", [][]int{{1, 3}, {5, 9}}, nil, nil}, } // 开始测试 for i, c := range cases { t.Run(c.name+" "+strconv.Itoa(i), func(t *testing.T) { - got := Solution(c.inputs) + got := Solution(c.f, c.s) 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", + c.expect, got, c.f, c.s) } }) } } -// 压力测试 +// 压力测试 func BenchmarkSolution(b *testing.B) { } -// 使用案列 +// 使用案列 func ExampleSolution() { }