From 894ed700351ed9ffc4375f6c296ff1318e29a52a Mon Sep 17 00:00:00 2001 From: 0xff-dev Date: Thu, 20 Jun 2024 22:54:35 +0800 Subject: [PATCH] Add solution and test-cases for problem 1552 --- .../README.md | 31 ++++++++------- .../Solution.go | 37 +++++++++++++++++- .../Solution_test.go | 20 +++++----- .../q3v1.jpeg | Bin 0 -> 28141 bytes 4 files changed, 61 insertions(+), 27 deletions(-) create mode 100644 leetcode/1501-1600/1552.Magnetic-Force-Between-Two-Balls/q3v1.jpeg diff --git a/leetcode/1501-1600/1552.Magnetic-Force-Between-Two-Balls/README.md b/leetcode/1501-1600/1552.Magnetic-Force-Between-Two-Balls/README.md index 4484f3063..29ca47055 100755 --- a/leetcode/1501-1600/1552.Magnetic-Force-Between-Two-Balls/README.md +++ b/leetcode/1501-1600/1552.Magnetic-Force-Between-Two-Balls/README.md @@ -1,28 +1,29 @@ # [1552.Magnetic Force Between Two Balls][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 +In the universe Earth C-137, Rick discovered a special form of magnetic force between two balls if they are put in his new invented basket. Rick has `n` empty baskets, the ith basket is at `position[i]`, Morty has `m` balls and needs to distribute the balls into the baskets such that the **minimum magnetic force** between any two balls is **maximum**. -**Example 1:** +Rick stated that magnetic force between two different balls at positions `x` and `y` is `|x - y|`. -``` -Input: a = "11", b = "1" -Output: "100" -``` +Given the integer array `position` and the integer `m`. Return the required force. -## 题意 -> ... +**Example 1:** -## 题解 +![1](./q3v1.jpeg) -### 思路1 -> ... -Magnetic Force Between Two Balls -```go +``` +Input: position = [1,2,3,4,7], m = 3 +Output: 3 +Explanation: Distributing the 3 balls into baskets 1, 4 and 7 will make the magnetic force between ball pairs [3, 3, 6]. The minimum magnetic force is 3. We cannot achieve a larger minimum magnetic force than 3. ``` +**Example 2:** + +``` +Input: position = [5,4,3,2,1,1000000000], m = 2 +Output: 999999999 +Explanation: We can use baskets 1 and 1000000000. +``` ## 结语 diff --git a/leetcode/1501-1600/1552.Magnetic-Force-Between-Two-Balls/Solution.go b/leetcode/1501-1600/1552.Magnetic-Force-Between-Two-Balls/Solution.go index d115ccf5e..52357de95 100644 --- a/leetcode/1501-1600/1552.Magnetic-Force-Between-Two-Balls/Solution.go +++ b/leetcode/1501-1600/1552.Magnetic-Force-Between-Two-Balls/Solution.go @@ -1,5 +1,38 @@ package Solution -func Solution(x bool) bool { - return x +import "sort" + +func canPlaceBalls(x int, position []int, m int) bool { + prevBallPos := position[0] + ballsPlaced := 1 + + for i := 1; i < len(position) && ballsPlaced < m; i++ { + currPos := position[i] + if currPos-prevBallPos >= x { + ballsPlaced++ + prevBallPos = currPos + } + } + + return ballsPlaced == m +} + +func Solution(position []int, m int) int { + answer := 0 + n := len(position) + sort.Ints(position) + + low := 1 + high := int(position[n-1]) / (m - 1) + for low <= high { + mid := low + (high-low)/2 + if canPlaceBalls(mid, position, m) { + answer = mid + low = mid + 1 + } else { + high = mid - 1 + } + } + + return answer } diff --git a/leetcode/1501-1600/1552.Magnetic-Force-Between-Two-Balls/Solution_test.go b/leetcode/1501-1600/1552.Magnetic-Force-Between-Two-Balls/Solution_test.go index 14ff50eb4..fceebe1ff 100644 --- a/leetcode/1501-1600/1552.Magnetic-Force-Between-Two-Balls/Solution_test.go +++ b/leetcode/1501-1600/1552.Magnetic-Force-Between-Two-Balls/Solution_test.go @@ -10,30 +10,30 @@ func TestSolution(t *testing.T) { // 测试用例 cases := []struct { name string - inputs bool - expect bool + p []int + m int + expect int }{ - {"TestCase", true, true}, - {"TestCase", true, true}, - {"TestCase", false, false}, + {"TestCase1", []int{1, 2, 3, 4, 7}, 3, 3}, + {"TestCase2", []int{5, 4, 3, 2, 1, 1000000000}, 2, 999999999}, } // 开始测试 for i, c := range cases { t.Run(c.name+" "+strconv.Itoa(i), func(t *testing.T) { - got := Solution(c.inputs) + got := Solution(c.p, c.m) 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.p, c.m) } }) } } -// 压力测试 +// 压力测试 func BenchmarkSolution(b *testing.B) { } -// 使用案列 +// 使用案列 func ExampleSolution() { } diff --git a/leetcode/1501-1600/1552.Magnetic-Force-Between-Two-Balls/q3v1.jpeg b/leetcode/1501-1600/1552.Magnetic-Force-Between-Two-Balls/q3v1.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..a81c0ebb0eabfd807f2c6c286f53c85340743243 GIT binary patch literal 28141 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 literal 0 HcmV?d00001