LeetCode初级算法:动态规划
Posted remo0x
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode初级算法:动态规划相关的知识,希望对你有一定的参考价值。
1. 爬楼梯
用时:4ms
class Solution
public int climbStairs(int n)
if(n==1) return 1;
if(n==2) return 2;
int[] num=new int[n];
num[0]=1;
num[1]=2;
for(int i=2;i<n;++i)
num[i]=num[i-2]+num[i-1];
return num[n-1];
2. 买卖股票的最佳时机
用时:2ms
class Solution
public int maxProfit(int[] prices)
if(prices==null||prices.length==0) return 0;
int max=0,min=prices[0],temp;
for(int i=1;i<prices.length;++i)
if(prices[i]<min)
min=prices[i];
else if((temp=prices[i]-min)>max)
max=temp;
return max;
3. 最大子序和
用时:26ms
class Solution
public int maxSubArray(int[] nums)
int max=nums[0],sum=nums[0];
for(int i=1;i<nums.length;++i)
if(sum<0)
sum=nums[i];
else
sum+=nums[i];
if(sum>max)
max=sum;
return max;
4. 打家劫舍
用时:3ms
class Solution
public int rob(int[] nums)
int len=nums.length;
// 返回前两个
if(len==0) return 0;
if(len==1) return nums[0];
// 初始化状态
int a=nums[0];
int b=Math.max(nums[0],nums[1]);
// 计算状态转移
int max=b,temp;
for(int i=2;i<len;++i)
temp=b;
b=Math.max(nums[i]+a,b);
a=temp;
if(b>max) max=b;
return max;
以上是关于LeetCode初级算法:动态规划的主要内容,如果未能解决你的问题,请参考以下文章
[LeetCode] 121. 买卖股票的最佳时机 ☆(动态规划)