原文链接: https://leetcode-cn.com/problems/add-minimum-number-of-rungs
英文原文
You are given a strictly increasing integer array rungs that represents the height of rungs on a ladder. You are currently on the floor at height 0, and you want to reach the last rung.
You are also given an integer dist. You can only climb to the next highest rung if the distance between where you are currently at (the floor or on a rung) and the next rung is at most dist. You are able to insert rungs at any positive integer height if a rung is not already there.
Return the minimum number of rungs that must be added to the ladder in order for you to climb to the last rung.
Example 1:
Input: rungs = [1,3,5,10], dist = 2 Output: 2 Explanation: You currently cannot reach the last rung. Add rungs at heights 7 and 8 to climb this ladder. The ladder will now have rungs at [1,3,5,7,8,10].
Example 2:
Input: rungs = [3,6,8,10], dist = 3 Output: 0 Explanation: This ladder can be climbed without adding additional rungs.
Example 3:
Input: rungs = [3,4,6,7], dist = 2 Output: 1 Explanation: You currently cannot reach the first rung from the ground. Add a rung at height 1 to climb this ladder. The ladder will now have rungs at [1,3,4,6,7].
Example 4:
Input: rungs = [5], dist = 10 Output: 0 Explanation: This ladder can be climbed without adding additional rungs.
Constraints:
1 <= rungs.length <= 1051 <= rungs[i] <= 1091 <= dist <= 109rungsis strictly increasing.
中文题目
给你一个 严格递增 的整数数组 rungs ,用于表示梯子上每一台阶的 高度 。当前你正站在高度为 0 的地板上,并打算爬到最后一个台阶。
另给你一个整数 dist 。每次移动中,你可以到达下一个距离你当前位置(地板或台阶)不超过 dist 高度的台阶。当然,你也可以在任何正 整数 高度处插入尚不存在的新台阶。
返回爬到最后一阶时必须添加到梯子上的 最少 台阶数。
示例 1:
输入:rungs = [1,3,5,10], dist = 2 输出:2 解释: 现在无法到达最后一阶。 在高度为 7 和 8 的位置增设新的台阶,以爬上梯子。 梯子在高度为 [1,3,5,7,8,10] 的位置上有台阶。
示例 2:
输入:rungs = [3,6,8,10], dist = 3 输出:0 解释: 这个梯子无需增设新台阶也可以爬上去。
示例 3:
输入:rungs = [3,4,6,7], dist = 2 输出:1 解释: 现在无法从地板到达梯子的第一阶。 在高度为 1 的位置增设新的台阶,以爬上梯子。 梯子在高度为 [1,3,4,6,7] 的位置上有台阶。
示例 4:
输入:rungs = [5], dist = 10 输出:0 解释:这个梯子无需增设新台阶也可以爬上去。
提示:
1 <= rungs.length <= 1051 <= rungs[i] <= 1091 <= dist <= 109rungs严格递增
通过代码
高赞题解
func addRungs(rungs []int, dist int) (ans int) {
pre := 0
for _, h := range rungs {
if d := h - pre; d > dist {
ans += (d - 1) / dist // 等价于 ceil(d / dist) - 1
}
pre = h
}
return
}
统计信息
| 通过次数 | 提交次数 | AC比率 |
|---|---|---|
| 5855 | 12982 | 45.1% |
提交历史
| 提交时间 | 提交结果 | 执行时间 | 内存消耗 | 语言 |
|---|