Skip to content

Climbing Stairs

Problem Description

Given an integer array A of length N. Where Ai is the cost of stepping on the ith stair.

From ith stair, you can go to i+1th or i+2th numbered stair.

Initially, you are at 1st stair find the minimum cost to reach Nth stair.

Problem Constraints

2 <= N <= 10^5
1 <= Ai <= 10^4

Input Format

The first and only argument is an integer array A.

Output Format

Return an integer.

Example Input

Input 1:
A = [1, 2, 1, 3]

Input 2:
A = [1, 2, 3, 4]

Example Output

Output 1:
5

Output 2:
7

Example Explanation

Explanation 1:
1 -> 3 -> 4

Explanation 2:
1 -> 2 -> 4

Solution

swift
import Foundation

class Solution {
	func solve(_ A: inout [Int]) -> Int {
        let len = A.count
        if len == 0 {
            return 0
        }
        if len == 1 {
            return A[len-1]
        }
        if len == 2 {
            return A[len-2] + A[len-1]
        }
        var ret = Array(repeating:0, count:len)
        ret[len-1] = A[len-1]
        ret[len-2] = A[len-2] + A[len-1]
        
        for i in (0..<len-2).reversed() {
            ret[i] = A[i] + min(ret[i+1],ret[i+2])
        }
        return ret[0]
	}
}

References