假設你正在爬樓梯。需要 n 階你才能到達樓頂。
每次你可以爬 1 或 2 個台階。你有多少種不同的方法可以爬到樓頂呢?
注意:給定 n 是乙個正整數。
示例 1:
輸入: 2
輸出: 2
解釋: 有兩種方法可以爬到樓頂。
1. 1 階 + 1 階
2. 2 階
示例 2:
輸入: 3
輸出: 3
解釋: 有三種方法可以爬到樓頂。
1. 1 階 + 1 階 + 1 階
2. 1 階 + 2 階
3. 2 階 + 1 階
動態規劃
爬上第n 層樓梯,是一般有兩種方法,第n-1 層爬一層到達,或者是第n-2 層爬兩層到達,以此類推,再算出第n-1 層與第n-2 的層,所以可以用遞迴,但是反過來的遞推效率更高,即前面可知第n 層可以由第n-2 層與第n-1 層,然後不斷算到第n 層。
public int climbstairs(int n)
return sum;
}
法二
遞迴超時,所以加入map ,把算過的存一下,如果再用到就不算了,節省效能開銷,提高效率。
mapmap = new hashmap<>();
public int climbstairs(int n) else
}
給定兩個二進位制字串,返回他們的和(用二進位制表示)。
輸入為非空字串且只包含數字1
和0
。
示例 1:
輸入: a = "11", b = "1"
輸出: "100"
示例 2:
輸入: a = "1010", b = "1011"
輸出: "10101"
public string addbinary(string a, string b)
int t_b = new int[len];
for (i = 0; i < len_b; i++)
int temp = 0; // 進製值,進製的話該值為1
int res = new int[len];
for (i = len-1;i >= 0;i--)
stringbuilder sb = new stringbuilder();
for (i = 0; i < len; i++)
break;}}
if (i == len)
return "0";
return sb.tostring();
}/**
* 由二進位制相加的特點
*/public int getresult(int i, int j, int temp)
/*** 獲取進製值0,1 都不進製,所以返回0
* > 1 才進製
*/public int gettemp(int i, int j, int temp)
給定乙個陣列,將陣列中的元素向右移動 k 個位置,其中 k 是非負數。
示例 1:
輸入:示例 2:[1,2,3,4,5,6,7] 和
輸出:k= 3
[5,6,7,1,2,3,4]
解釋:向右旋轉 1 步: [7,1,2,3,4,5,6]向右旋轉 2 步: [6,7,1,2,3,4,5]
向右旋轉 3 步: [5,6,7,1,2,3,4]
輸入:[-1,-100,3,99] 和 k = 2輸出:[3,99,-1,-100]解釋:向右旋轉 1 步: [99,-1,-100,3]取模運算向右旋轉 2 步: [3,99,-1,-100]
public void rotate(int nums, int k)
system.arraycopy(temp, 0, nums, 0, nums.length);
}
Java基礎演算法練習五題 (4)
16.輸出九九乘法表 package com.myd.ex4 public class multinine system.out.println 17.猴子吃桃問題 猴子第一天摘下若干個桃子,當即吃了一半,還不癮,又多吃了乙個 第二天早上又將剩 下的桃子吃掉一半,又多吃了乙個。以後每天 早上都吃了前...
Java 演算法題筆記(二,二維陣列)
力扣刷到的一題,做一下筆記。思路先找出格仔裡所有腐爛的橘子,然後這些橘子每傳染一次,記深度 1 直到不能再傳染了為止,再去判斷這些橘子裡,是否還有好橘子,如果有則為不能完全傳染,返回 1 如果沒有則為能全部傳完,那就返回深度值。原來,dr,dc 是控制上下左右移動的,這裡寫的是上,左,下,右 pub...
演算法題 LeetCode刷題(五)
資料結構和演算法是程式設計路上永遠無法避開的兩個核心知識點,本系列 演算法題 旨在記錄刷題過程中的一些心得體會,將會挑出leetcode等最具代表性的題目進行解析,題解基本都來自於leetcode官網 本文是第五篇。給定乙個非負整數陣列,你最初位於陣列的第乙個位置。陣列中的每個元素代表你在該位置可以...