0198

作者: 日光降临 | 来源:发表于2019-04-07 00:12 被阅读0次

方法一 简单枚举
复杂度为2n, 实际上不可接受

int max(int a,int b){
    if(a>b)
        return a;
    else
        return b;
}

class Solution {
public:
    int solve(int idx, vector<int>& nums){
        if(idx<0)
            return 0;
        return max(nums[idx]+solve(idx-2,nums), solve(idx-1, nums));
    }
    int rob(vector<int>& nums) {
        int len = nums.size();
        return solve(len-1, nums);
    }
};

方法二 记忆搜索

C++:book变量不能用static修饰

int max(int a,int b){
    if(a>b)
        return a;
    else
        return b;
}

class Solution {
public:
    vector<int> book;
    int solve(int idx, vector<int>& nums){
        if(idx<0)
            return 0;
        if(book[idx]!=-1){
            return book[idx];
        }
        book[idx]=max(nums[idx]+solve(idx-2,nums), solve(idx-1,nums));
        return book[idx];
    }
    int rob(vector<int>& nums) {
        int len = nums.size();
        book = vector<int> (len,-1);
        return solve(len-1, nums);
    }
};

Java: 自带max函数,且book用static,

class Solution {
    public static int[] book;
    public int solve(int idx, int[] nums){
        if(idx<0)
            return 0;
        if(book[idx]!=-1){
            return book[idx];
        }
        book[idx]=Math.max(nums[idx]+solve(idx-2,nums), solve(idx-1,nums));
        return book[idx];
    }
    public int rob(int[] nums) {
        int i;
        int len=nums.length;
        book=new int[len];
        for(i=0;i<len;++i){
            book[i]=-1;
        }
        return solve(len-1,nums);
    }
}

动态数组:修改下面一行就OK
book = new int(len); =>book = new int[len];

int max(int a,int b){
    if(a>b)
        return a;
    else
        return b;
}
int* book=NULL;
class Solution {
public:

    int solve(int idx, vector<int>& nums){
        if(idx<0)
            return 0;
        if(book[idx]!=-1){
            return book[idx];
        }
        book[idx]=max(nums[idx]+solve(idx-2,nums), solve(idx-1, nums));
        return book[idx];
    }
    int rob(vector<int>& nums) {
        int i;
        int len = nums.size();
        book = new int[len];
        for(i=0;i<len;i++)
            book[i]=-1;
        return solve(len-1, nums);
    }
};

相关文章

  • 0198

    方法一 简单枚举复杂度为2n, 实际上不可接受 方法二 记忆搜索 C++:book变量不能用static修饰 Ja...

  • swift 系统生成二维码

    文章来源:http://blog.csdn.net/sbt0198/article/details/54138425

  • 每日冥想:0198

    没有靠教学学会写文当作家,都是自己激发了自己写作欲望的,我的写字训练营重点养成习惯激发内心链接灵感。 1.每日写字...

  • 5 种常用布局的 flex 实现

    https://juejin.im/post/5a1d0198f265da43052e5c52

  • 《死亡秘密》读后感之后记

    几个月前,当我第一次读到亞眠[https://www.jianshu.com/u/9fbbf0198c9d]先生的...

  • 2018年高考作文热点素材(四)

    编号:0198 2018年高考作文猜想话题:风景需要守护 别把攀崖捡垃圾只当“风景”看 据媒体报道,放绳工是安徽...

  • 0198 开始喝白茶、我们先要了解些什么?(四)——白牡丹

    0198 开始喝白茶、我们先要了解些什么?(四)——白牡丹 摘要:白牡丹是白毫银针出现之后第二种出现的白茶。白牡丹...

  • 0198 另类水浒 甩锅大王

    我先从一个你很熟悉的故事讲起。说起《水浒传》,相信大家都已经是耳熟能详了,作为中国四大名著之一,是一部以北宋末年宋...

  • 励言赋词0198天

    励言赋词0198天(2016年7月28日): 1、方法比问题多。最近虽然工作压力大,但这样的压力也逼迫了脑子转动起...

  • 0198之二月二吉祥!

    今天是什么日子 起床:5:35 就寝: 天气:晴好。逐渐暖和了 心情: 纪念日: 任务清单 昨日完成的任务,最重要...

网友评论

      本文标题:0198

      本文链接:https://www.haomeiwen.com/subject/zsqjiqtx.html