leetcode #70 in cpp

原创 2016年05月31日 09:14:19

You are climbing a stair case. It takes n steps to reach to the top.

Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top?


Solution:

We use DP. see comments.

Code:

class Solution {
public:

    int climbStairs(int n) {
       vector<int> dp(n+1,0);//dp[i] = distinct ways from i to n
       if(n-1 >= 0) dp[n-1] = 1;//position with 1 step from destination. only 1 way to reach the destination
       if(n-2 >= 0) dp[n-2] = 2;//position with 2 steps from destination. only 2 way to reach the destination;
       for(int i = n-3; i >=0 ; i --){
           dp[i] = dp[i+2]+dp[i+1];//distinct ways from position i to n: 1. we take one step to i+1; 2. we take 2 steps to i+2
       }                            //thus distinct ways from position i to n is the sum of the ones at i+1 and i+2
       return dp[0];
       
    }
};

相关文章推荐

leetcode #86 in cpp

Given a linked list and a value x, partition it such that all nodes less than x come before nodes gr...

leetcode #149 in cpp

Given n points on a 2D plane, find the maximum number of points that lie on the same straight line...

leetcode #24 in cpp

The question is to swap each pair in the linked list. And the requirement is to use constant space. ...

Leetcode 450. Delete Node in a BST (Medium) (cpp)

Leetcode 450. Delete Node in a BST (Medium) (cpp)
  • Niko_Ke
  • Niko_Ke
  • 2016年12月26日 07:50
  • 269

leetcode #114 in cpp

Given a binary tree, flatten it to a linked list in-place. For example, Given 1 ...

leetcode #160 in cpp

Write a program to find the node at which the intersection of two singly linked lists begins. F...

Leetcode 285. Inorder Successor in BST (Medium) (cpp)

Leetcode 285. Inorder Successor in BST (Medium) (cpp)
  • Niko_Ke
  • Niko_Ke
  • 2016年12月28日 03:38
  • 240

leetcode #139 in cpp

Given a string s and a dictionary of words dict, determine if s can be segmented into a space-separa...

leetcode #36 in cpp.

The question is to determine a Sudoku is valid.  Solution:  if a Sudoku is valid, each row, each co...

*leetcode 138 in cpp

A linked list is given such that each node contains an additional random pointer which could point t...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:leetcode #70 in cpp
举报原因:
原因补充:

(最多只允许输入30个字)