LeetCode java day8

LeetCode java day8

**198. 打家劫舍**

你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。

给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。

class Solution {
    public int rob(int[] nums) {
  int[] dp=new int[100];
            dp[0]=nums[0];
            int len=nums.length;
            for (int i = 1; i < len ; i++) {
                if(i==1){
                    dp[i]=Math.max(nums[1],nums[0]);
                }
                else {
                    dp[i]=Math.max(dp[i-1],dp[i-2]+nums[i]);
                }
            }
            return dp[len-1];
    }
}

感觉动态规划就很玄学。。。

有时候状态转移方程完全靠前三个数据写出来,然后就懵了。


LCR 088. 使用最小花费爬楼梯

数组的每个下标作为一个阶梯,第 i 个阶梯对应着一个非负数的体力花费值 cost[i](下标从 0 开始)。

每当爬上一个阶梯都要花费对应的体力值,一旦支付了相应的体力值,就可以选择向上爬一个阶梯或者爬两个阶梯。

请找出达到楼层顶部的最低花费。在开始时,你可以选择从下标为 0 或 1 的元素作为初始阶梯。

class Solution {
    static  int max=1001;
    int []dp=new int[max]; 
    public int minCostClimbingStairs(int[] cost) {
       
            dp[0]=dp[1]=0;
           for (int i = 2; i <=cost.length; i++) {
               dp[i]=Math.min((cost[i-1]+dp[i-1]),(cost[i-2]+dp[i-2]));
           }
           return dp[cost.length];

    }
}

确实使用动态规划还不错,但是由于题目原因,一开始容器过于庞大,所以咱可以初始化容器,直接一个劲往上走。

class Solution {
    public int minCostClimbingStairs(int[] cost) {
            if(cost.length<2){
                return 0;
            }
            int dp1=0;
            int dp2=0;
           for (int i = 2; i <=cost.length; i++) {
               int next=Math.min((dp1+cost[i-1]),(dp2+cost[i-2]));
               dp2=dp1;
               dp1=next;
           }
           return dp1;
    }
}

坚持就完了,写完力扣还得把这周学的树和图处理一下—

### 回答1: Leetcode是一个在线的算法题库,Java是一种流行的编程语言。Leetcode上的题目可以用Java语言来解决。Leetcode上有大量的题目,覆盖了各种难度级别和算法类型,包括数组、字符串、链表、树、图、动态规划、排序、贪心、回溯等等。Java作为一种高级编程语言,可以快速并且简洁地解决Leetcode上的问题。此外,Java还有丰富的类库和框架,方便开发人员使用。如果你想使用Java来解决Leetcode的问题,可以在Leetcode上完成编码,然后在测试通过后,下载题目页面中的PDF文件,进行备份和归档,以便在以后需要的时候查看。 总而言之,Leetcode Java PDF可以让您用Java语言解决Leetcode上的问题,并将完成的代码用PDF文件格式化,以备将来参考。 ### 回答2: LeetCode是一个在线的编程题库,提供了2000多道算法题目,并且还提供了讨论和答案解释。其中,JavaLeetCode支持的编程语言之一,因此学习Java语言可以更好地完成LeetCode算法的练习。此外,LeetCode还提供了PDF文档,以便有需要的用户离线学习或分享给其他人。这些PDF文档包括Java编程语言的基础知识和LeetCode算法解析。如果想要成为一个出色的Java工程师或算法专家,深入学习LeetCode并掌握Java编程语言是非常重要的。因此,练习LeetCode算法和阅读编程语言的PDF文档对于提升编程技能和职业发展是非常有帮助的。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值