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初级算法:动态规划的主要内容,如果未能解决你的问题,请参考以下文章

算法刷题:LC初级算法动态规划类

leetcode-买卖股票的最佳时机(动态规划)

[LeetCode] 121. 买卖股票的最佳时机 ☆(动态规划)

LeetCode-动态规划买卖股票的最佳时机

LeetCode 0123.买卖股票的最佳时机III:常数空间下的动态规划+模拟

LeetCode ---- 买卖股票系列问题思路与题解