首页 > 其他分享 >2-207-通过(LeetCode-509)熟悉动态规划的解题步骤

2-207-通过(LeetCode-509)熟悉动态规划的解题步骤

时间:2023-04-17 14:13:24浏览次数:64  
标签:f0 f1 f2 return 207 int 509 LeetCode dp

1. 题目

 

运态规划的定义

 

 

 

动态规划的解题步骤

 

 

2. 解法

2.1 递归
 public static int fibonacci(int n) {
if (n == 0) {
return 0;
}

if (n == 1) {
return 1;
}

return fibonacci(n - 1) + fibonacci(n - 2);
}

2.2 运态规划+递归
public static int fibonacci2(int n, int[] dp) {
if (n == 0) {
dp[0] = 0;
return 0;
}

if (n == 1) {
dp[1] = 1;
return 1;
}

dp[n] = fibonacci2(n - 1, dp) + fibonacci2(n - 2, dp);
return dp[n];
}

2.3 循环
public static int fibonacci3(int n) {

if (n == 0) {
return 0;
}

if (n == 1) {
return 1;
}

int f0 = 0;
int f1 = 1;
int f2 = 0;
for (int i = 2; i <= n; i++) {
f2 = f1 + f0;
f0 = f1;
f1 = f2;

}

return f2;

}

3. 总结

标签:f0,f1,f2,return,207,int,509,LeetCode,dp
From: https://www.cnblogs.com/shoshana-kong/p/17325666.html

相关文章

  • leetcode:最小栈
    问题描述设计一个支持push,pop,top操作,并能在常数时间内检索到最小元素的栈。实现MinStack类:MinStack()初始化堆栈对象。voidpush(intval)将元素val推入堆栈。voidpop()删除堆栈顶部的元素。inttop()获取堆栈顶部的元素。intgetMin()获取堆栈中的最小元素。......
  • LeetCode Top100: 爬楼梯 (python)
     假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 示例1:输入:n=2输出:2解释:有两种方法可以爬到楼顶。1.1阶+1阶2.2阶示例2:输入:n=3输出:3解释:有三种方法可以爬到楼顶。1.1阶+1......
  • leetcode160-相交链表
    leetcode160方法一:哈希表思路:先创建一个unordered_set,存放ListNode*类型的变量先遍历其中一个链表,把所有节点的指针放在set中再遍历另一个链表,查找是否存在一个节点已经在set中,如果存在则说明这是它们的相交节点的指针,返回这个指针,如果不存在则说明不存在相交节点,......
  • LeetCode-Top100: 有效的括号 (python)
     给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的相同类型的左括号。 示例1:输入:s="()"输出:true示例 2:输入:s="()[]{}"输......
  • LeetCode-Top100:两数之和(python)
     给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。 示例1:输入:nums=......
  • leetcode_打卡5
    leetcode_打卡5题目:345.反转字符串中的元音字母思路:双指针classSolution{publicStringreverseVowels(Strings){intn=s.length();char[]arr=s.toCharArray();inti=0;intj=n-1;while(i<j){while(i<n&&!yua......
  • LeetCode 双周赛 102,模拟 / BFS / Dijkstra / Floyd
    本文已收录到AndroidFamily,技术和职场问题,请关注公众号[彭旭锐]提问。大家好,欢迎来到小彭的LeetCode周赛解题报告。昨晚是LeetCode双周赛第102场,你参加了吗?这场比赛比较简单,拼的是板子手速,继上周掉大分后算是回了一口血......
  • 【前缀和】LeetCode 523. 连续的子数组和
    题目链接523.连续的子数组和思路参考宫水三叶大佬题解一开始以为和Leetcode53MaximumSubarray思路差不多,都是求子数组的值。但是后来发现在53题中并没有求出每个子数组的和,只是在贪心的情况下求出了可能的最大和代码classSolution{publicbooleancheckSubarra......
  • w7 T232071 解方程
      主要思路:由于根与根之差的绝对值>=1,所以在单位唯一的区间内至多只有一个根。使用零点存在性定理,定义左端点left和right,若f(left)*f(right)<=0,则在区间内必有根,然后再在区间内使用二分来确定根的精度。 代码如下:#include<iostream>#include<cmath>#include<algorithm>#in......
  • LeetCode 115. 不同的子序列
    classSolution{public:longlongf[1010][1010];//f[i][j]表示s前i个字符得到t前j个字符的所有方案intnumDistinct(strings,stringt){f[0][0]=1;intn=s.size(),m=t.size();s=''+s;t=''+t;for(inti=1;i<=n;i+......