【打卡】牛客网:BM79 打家劫舍(二)

资料:

dp.clear()会把dp的size变为0。 

assign和insert的对比:

v1.assign(v2.begin(), v2.end());

v1.insert(pos,n,elem); //在pos位置插入n个elem数据,无返回值。
v1.insert(pos,beg,end); //在pos位置插入[beg,end)区间的数据,无返回值

vector的assign和insert操作实现坐标正逆序添加_std::vector assign-CSDN博客 

 dp.assign()赋值,会把dp之前的值覆盖。

c++ vector(二) insert, assign_c++ vector assign insert-CSDN博客

模板的:

我的想法是,在数组最后一个后面加上第一个,仿佛就构成了闭环。欠考虑了:第一个和最后一个只能选择一个。也就是,我的做法可能导致第一个被选择两次。

模板的,分了两种情况:选择第一个、不选择第一个。从而不需要再考虑闭环问题。

模板的疑惑:dp.clear()后不能直接dp[1]=0赋值吧?clear后数组size为0,需要用insert或者push_back。

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param nums int整型vector 
     * @return int整型
     */
    int rob(vector<int>& nums) {
        // write code here
        int n = nums.size();
        int res = 0;

        //选择第一个,一定不能选择最后一个
        vector<int> dp(n);
        dp[1] = nums[0];
        for(int i = 2; i < n; i++)
            dp[i] = max(dp[i-1], dp[i-2]+nums[i-1]);
        res = max(res, dp[n-1]);

        //不选择第一个,可以选择最后一个
        vector<int> dp2(n+1);
        for(int i = 2; i <= n; i++)
            dp2[i] = max(dp2[i-1], dp2[i-2]+nums[i-1]);
        res = max(res, dp2[n]);

        return res;
    }
};

相关推荐

  1. BM79 打家劫舍()

    2024-01-11 12:50:03       41 阅读
  2. BM75 编辑距离(一)

    2024-01-11 12:50:03       39 阅读
  3. BM76 正则表达式匹配

    2024-01-11 12:50:03       33 阅读
  4. BM61 矩阵最长递增路径

    2024-01-11 12:50:03       35 阅读
  5. BM68 矩阵的最小路径和

    2024-01-11 12:50:03       36 阅读
  6. BM69 把数字翻译成字符串

    2024-01-11 12:50:03       31 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-11 12:50:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-11 12:50:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-11 12:50:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-11 12:50:03       18 阅读

热门阅读

  1. 算法:A*算法最小实例

    2024-01-11 12:50:03       34 阅读
  2. C++经典程序

    2024-01-11 12:50:03       35 阅读
  3. 【金融支付】常用术语和定义

    2024-01-11 12:50:03       32 阅读
  4. 一、SpringBoot框架搭建

    2024-01-11 12:50:03       34 阅读
  5. C/C++-传值/地址的区别

    2024-01-11 12:50:03       28 阅读
  6. 在IntelliJ IDEA中,.idea文件是什么,可以删除吗

    2024-01-11 12:50:03       33 阅读
  7. Crow:路由局部插件2 调用before_handle

    2024-01-11 12:50:03       40 阅读
  8. C++入门级程序day1

    2024-01-11 12:50:03       36 阅读
  9. Python Selenium常见的报错以及措施

    2024-01-11 12:50:03       34 阅读