zoukankan      html  css  js  c++  java
  • 198. House Robber

    我的心好痛,有点可怜自己了,骗子啊。。好伤心。。。。为什么要骗我。

    你说,霞染天光,陌上花开与谁享;后来,烟笼柳暗,湖心水动影无双。

    dp[i] = Math.max(dp[i-1], dp[i-2] + nums[i]);

    public class Solution {
        public int rob(int[] nums) {
            if (nums.length == 0) return 0;
            if (nums.length == 1) return nums[0];
            
            int res = 0;
            int prev = nums[0];
            int temp = nums[1];
            for (int i = 2; i < nums.length; i++) {
                int rec = temp;
                temp = Math.max(prev + nums[i], temp);
                prev = rec;
            }
            return temp;
        }
    }
    


    三刷了吧。。。感觉这个题研究好多次了。

    一个神奇的思路是。
    dp[i % 2]表示今天。
    dp[(i-1) % 2]昨天。
    dp[(i-2) % 2]前天。。

    public class Solution {
        public int rob(int[] nums) {
            if (nums.length == 0) return 0;
            if (nums.length == 1) return nums[0];
            if (nums.length == 2) return Math.max(nums[0], nums[1]);
            
            int[] dp = new int[2];
            
            for (int i = 2; i < nums.length; i++) {
                int current = dp[(i-2)%2] + nums[i];
                int yesterday = dp[(i-1)%2];
                dp[i%2] = Math.max(current, yesterday);
            }
            return dp[(dp.length-1) % 2];
        }
    }
    
  • 相关阅读:
    Redis数据结构之字典
    多路复用
    Redis数据结构之SDS
    记一个图片转换神器vectorizer
    Java基础之面向对象上
    科学
    Linux内核源码分析之setup_arch (二)
    Linux内核源码分析之setup_arch (一)
    printk 流程分析
    多个线程顺序打印问题,一网打尽
  • 原文地址:https://www.cnblogs.com/reboot329/p/6127897.html
Copyright © 2011-2022 走看看