Frog Jump
Real-world version: Pipeline Pad HopsThe statement here is our own: the same inputs, outputs and technique.
An inspection crawler walks a pipeline by hopping between steel pads bolted to the outside of the pipe. pads lists the distance of each pad from the pump house in metres, sorted strictly increasing, and pads[0] is always 0 because the crawler is parked on the first pad.
Hops obey two rules:
- The very first hop must cover exactly 1 metre.
- If the crawler's previous hop covered
kmetres, its next hop must coverk - 1,kork + 1metres. A hop always moves forward, so its length must be at least 1 metre.
Every hop has to finish on a pad; landing on bare pipe is not allowed, and the crawler may not skip a hop or move backwards.
Return true if the crawler can get from the first pad to the last pad in pads, and false otherwise. Pads in between may be passed over.
Examples
Example 1
- Input
- pads = [0, 1, 2, 4, 7, 11]
- Output
- true
Hops of 1, 1, 2, 3 and 4 metres land on pads 1, 2, 4, 7 and 11. The first hop is 1 metre and every later hop is within 1 metre of the one before it.
Example 2
- Input
- pads = [0, 2]
- Output
- false
The opening hop has to cover exactly 1 metre, and there is no pad 1 metre along, so the crawler never leaves the first pad.
Example 3
- Input
- pads = [0, 1, 3, 6, 8]
- Output
- true
Hops of 1, 2, 3 and 2 metres land on pads 1, 3, 6 and 8. Each hop length is within 1 metre of the previous hop, and the 2-metre finish is one metre shorter than the 3-metre hop before it.
Example 4
- Input
- pads = [0, 1, 3, 6, 7]
- Output
- false
Pad 6 can only be entered with a 3-metre hop, after hops of 1 and 2 metres. A 3-metre hop must be followed by one of 2, 3 or 4 metres, which land on bare pipe at 8, 9 and 10, and pad 7 stays out of reach by every other legal sequence too.
Constraints
- 2 <= pads.length <= 2000
- 0 <= pads[i] <= 2^31 - 1
- pads[0] == 0
- pads is sorted in strictly increasing order.
The signature
The editor starts with this. It matches the parent problem's shape, so a solution that works here works on a standard judge unchanged.
def can_reach_last_pad(pads: list[int]) -> bool:public boolean canReachLastPad(int[] pads)Checking your plan…
How this problem was checked
- Passed: Reference solution run against 13 test cases: 13 passed
- Passed: 4 worked examples confirmed by running the code
- Passed: 0 eight-word sequences shared with the parent problem's text
- Passed: Agrees with an independent brute-force solution on random inputs
- Passed: Test set shown to catch deliberately broken solutions
- Passed: Reviewed by a separate quality pass
- Passed: Function arity matches the parent problem's