70. 爬楼梯
70. 爬楼梯
https://leetcode-cn.com/problems/climbing-stairs/description/
package com.test; import java.util.HashMap; import java.util.Map; public class Lesson070 { public static void main(String[] args) { int n = 45; int i = climbStairs(n); System.out.println(i); } public static int climbStairs(int n) { Map<Integer,Integer> map= new HashMap<>(); map.put(1, 1); map.put(2, 2); map.put(3 ,3); map.put(4 ,5); map.put(5 ,8); map.put(6 ,13); map.put(7 ,21); map.put(8 ,34); map.put(9 ,55); map.put(10 ,89); map.put(11 ,144); map.put(12 ,233); map.put(13 ,377); map.put(14 ,610); map.put(15 ,987); map.put(16 ,1597); map.put(17 ,2584); map.put(18 ,4181); map.put(19 ,6765); map.put(20 ,10946); map.put(21 ,17711); map.put(22 ,28657); map.put(23 ,46368); map.put(24 ,75025); map.put(25 ,121393); map.put(26 ,196418); map.put(27 ,317811); map.put(28 ,514229); map.put(29 ,832040); map.put(30 ,1346269); map.put(31 ,2178309); map.put(32 ,3524578); map.put(33 ,5702887); map.put(34 ,9227465); map.put(35 ,14930352); map.put(36 ,24157817); map.put(37 ,39088169); map.put(38 ,63245986); map.put(39 ,102334155); map.put(40 ,165580141); map.put(41 ,267914296); map.put(42 ,433494437); map.put(43 ,701408733); map.put(44 ,1134903170); map.put(45 ,1836311903); for(int i=3;i<Integer.MAX_VALUE;i++) { Integer i1 = map.get(i - 1); Integer i2 = map.get(i - 2); if (i1 + i2 < 0) { break; } map.put(i,i1+i2); System.out.println("map.put("+i+"\t\t,"+map.get(i)+");"); } return map.get(n); // 每次都有两种选择 // if (n - 1 == 0) { // return 1; // } // if (n - 2 == 0) { // return 2; // } // if (n - 44 == 0) { // return 1134903170; // } // // 向后回溯只是两种情况的累加 // return climbStairs(n-1)+climbStairs(n-2); } }