70. 爬樓梯 - 力扣(LeetCode)
題目:
假設(shè)你正在爬樓梯。需要?
n
?階你才能到達(dá)樓頂。每次你可以爬?
1
?或?2
?個(gè)臺(tái)階。你有多少種不同的方法可以爬到樓頂呢?
?示例:
?輸入:n = 3 輸出:3 解釋:有三種方法可以爬到樓頂。
1. 1 階 + 1 階 + 1 階2. 1 階 + 2 階
3. 2 階 + 1 階
?思路:
爬樓梯分為的兩種方式:
當(dāng)樓梯階數(shù)大于2時(shí),第一種:第一步爬1階;第二種:第一步爬2階。爬過一階后,可以當(dāng)做又是第一步爬。
方法一:遞歸
class Solution {
Map<Integer,Integer> storeMap = new HashMap<>();
public int climbStairs(int n) {
if (n==1)return 1;
if (n==2)return 2;
if (null !=storeMap.get(n))
return storeMap.get(n);
else {
int res = climbStairs(n-1)+climbStairs(n-2);
storeMap.put(n,res);
return res;
}
}
}
方法二:循環(huán) (遞歸轉(zhuǎn)換)
class Solution {
public int climbStairs(int n) {
//循環(huán)
if(n==1)return 1;
if (n==2)return 2;
int p1 = 1;
int p2 = 2;
int res = 0;
for (int i = 3; i <= n; i++) {
res = p1+p2;
p1 = p2;
p2 = res;
}
return res;
}
}
209. 長(zhǎng)度最小的子數(shù)組 - 力扣(LeetCode)
題目描述:
給定一個(gè)含有?n?個(gè)正整數(shù)的數(shù)組和一個(gè)正整數(shù) target 。
找出該數(shù)組中滿足其和 ≥ target 的長(zhǎng)度最小的 連續(xù)子數(shù)組?[numsl, numsl+1, ..., numsr-1, numsr],并返回其長(zhǎng)度。如果不存在符合條件的子數(shù)組,返回 0 。
示例:
輸入:target = 7, nums = [2,3,1,2,4,3]
輸出:2
解釋:子數(shù)組?[4,3]是該條件下的長(zhǎng)度最小的子數(shù)組。文章來源:http://www.zghlxwxcb.cn/news/detail-436023.html
?思路:開始用的雙循環(huán)暴力枚舉,結(jié)果超時(shí)了,改用滑動(dòng)窗口法。文章來源地址http://www.zghlxwxcb.cn/news/detail-436023.html
class Solution {
public int minSubArrayLen(int target, int[] nums) {
int res = Integer.MAX_VALUE;
int sum = 0;
int i = 0;
int j = 0;
while (i<nums.length){
sum+=nums[i++];
while (sum>=target){
res = Math.min(res,i-j);
sum -= nums[j++];
}
}
return res == Integer.MAX_VALUE?0:res;
}
}
到了這里,關(guān)于leetcode 70.爬樓梯+209.長(zhǎng)度最小的子數(shù)組的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!