mirror of
https://github.com/halfrost/LeetCode-Go.git
synced 2026-03-13 10:02:05 +08:00
添加 problem 881
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
package leetcode
|
||||
|
||||
import (
|
||||
"sort"
|
||||
)
|
||||
|
||||
func numRescueBoats(people []int, limit int) int {
|
||||
sort.Ints(people)
|
||||
left, right, res := 0, len(people)-1, 0
|
||||
for left <= right {
|
||||
if left == right {
|
||||
res++
|
||||
return res
|
||||
}
|
||||
if people[left]+people[right] <= limit {
|
||||
left++
|
||||
right--
|
||||
} else {
|
||||
right--
|
||||
}
|
||||
res++
|
||||
}
|
||||
return res
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
package leetcode
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"testing"
|
||||
)
|
||||
|
||||
type question881 struct {
|
||||
para881
|
||||
ans881
|
||||
}
|
||||
|
||||
// para 是参数
|
||||
// one 代表第一个参数
|
||||
type para881 struct {
|
||||
s []int
|
||||
k int
|
||||
}
|
||||
|
||||
// ans 是答案
|
||||
// one 代表第一个答案
|
||||
type ans881 struct {
|
||||
one int
|
||||
}
|
||||
|
||||
func Test_Problem881(t *testing.T) {
|
||||
|
||||
qs := []question881{
|
||||
|
||||
question881{
|
||||
para881{[]int{1, 2}, 3},
|
||||
ans881{1},
|
||||
},
|
||||
|
||||
question881{
|
||||
para881{[]int{3, 2, 2, 1}, 3},
|
||||
ans881{3},
|
||||
},
|
||||
|
||||
question881{
|
||||
para881{[]int{3, 5, 3, 4}, 5},
|
||||
ans881{4},
|
||||
},
|
||||
|
||||
question881{
|
||||
para881{[]int{5, 1, 4, 2}, 6},
|
||||
ans881{2},
|
||||
},
|
||||
|
||||
question881{
|
||||
para881{[]int{3, 2, 2, 1}, 3},
|
||||
ans881{3},
|
||||
},
|
||||
}
|
||||
|
||||
fmt.Printf("------------------------Leetcode Problem 881------------------------\n")
|
||||
|
||||
for _, q := range qs {
|
||||
_, p := q.ans881, q.para881
|
||||
fmt.Printf("【input】:%v 【output】:%v\n", p, numRescueBoats(p.s, p.k))
|
||||
}
|
||||
fmt.Printf("\n\n\n")
|
||||
}
|
||||
50
Algorithms/881. Boats to Save People/README.md
Normal file
50
Algorithms/881. Boats to Save People/README.md
Normal file
@@ -0,0 +1,50 @@
|
||||
# [881. Boats to Save People](https://leetcode.com/problems/boats-to-save-people/)
|
||||
|
||||
## 题目
|
||||
|
||||
The i-th person has weight people[i], and each boat can carry a maximum weight of limit.
|
||||
|
||||
Each boat carries at most 2 people at the same time, provided the sum of the weight of those people is at most limit.
|
||||
|
||||
Return the minimum number of boats to carry every given person. (It is guaranteed each person can be carried by a boat.)
|
||||
|
||||
|
||||
Example 1:
|
||||
|
||||
```c
|
||||
Input: people = [1,2], limit = 3
|
||||
Output: 1
|
||||
Explanation: 1 boat (1, 2)
|
||||
```
|
||||
|
||||
|
||||
Example 2:
|
||||
|
||||
```c
|
||||
Input: people = [3,2,2,1], limit = 3
|
||||
Output: 3
|
||||
Explanation: 3 boats (1, 2), (2) and (3)
|
||||
```
|
||||
|
||||
|
||||
Example 3:
|
||||
|
||||
```c
|
||||
Input: people = [3,5,3,4], limit = 5
|
||||
Output: 4
|
||||
Explanation: 4 boats (3), (3), (4), (5)
|
||||
```
|
||||
|
||||
Note:
|
||||
|
||||
- 1 <= people.length <= 50000
|
||||
- 1 <= people[i] <= limit <= 30000
|
||||
|
||||
|
||||
## 题目大意
|
||||
|
||||
给出人的重量数组,和一个船最大载重量 limit。一个船最多装 2 个人。要求输出装下所有人,最小需要多少艘船。
|
||||
|
||||
先对人的重量进行排序,然后用 2 个指针分别指向一前一后,一起计算这两个指针指向的重量之和,如果小于 limit,左指针往右移动,并且右指针往左移动。如果大于等于 limit,右指针往左移动。每次指针移动,需要船的个数都要 ++。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user