From 9584d0c13db6d4f4fd8dbcf22bd0e658f8796355 Mon Sep 17 00:00:00 2001 From: Openset Date: Mon, 28 Jan 2019 18:40:05 +0800 Subject: [PATCH] Add: Climbing Stairs --- problems/climbing-stairs/climbing_stairs.go | 11 +++++++ .../climbing-stairs/climbing_stairs_test.go | 30 +++++++++++++++++++ 2 files changed, 41 insertions(+) diff --git a/problems/climbing-stairs/climbing_stairs.go b/problems/climbing-stairs/climbing_stairs.go index f5cab39db..364aab98d 100644 --- a/problems/climbing-stairs/climbing_stairs.go +++ b/problems/climbing-stairs/climbing_stairs.go @@ -1 +1,12 @@ package climbing_stairs + +func climbStairs(n int) int { + if n == 1 { + return 1 + } + first, second := 1, 2 + for i := 3; i <= n; i++ { + first, second = second, first+second + } + return second +} diff --git a/problems/climbing-stairs/climbing_stairs_test.go b/problems/climbing-stairs/climbing_stairs_test.go index f5cab39db..cf254f45b 100644 --- a/problems/climbing-stairs/climbing_stairs_test.go +++ b/problems/climbing-stairs/climbing_stairs_test.go @@ -1 +1,31 @@ package climbing_stairs + +import "testing" + +type caseType struct { + input int + expected int +} + +func TestClimbStairs(t *testing.T) { + tests := [...]caseType{ + { + input: 1, + expected: 1, + }, + { + input: 2, + expected: 2, + }, + { + input: 3, + expected: 3, + }, + } + for _, tc := range tests { + output := climbStairs(tc.input) + if output != tc.expected { + t.Fatalf("input: %v, output: %v, expected: %v", tc.input, output, tc.expected) + } + } +}