【每日算法Day 104】偷电瓶的周某今天放出来了,还不赶紧做这道题防范一下!

简介: 【每日算法Day 104】偷电瓶的周某今天放出来了,还不赶紧做这道题防范一下!

偷电瓶的周某今天(2020.04.18)出来啦,打工是不可能打工的,这辈子都不可能打工的,大家可要小心咯。今天开始讲解 LeetCode 打家劫舍系列三道题目,给大家防范一下!

题目链接

LeetCode 198. 打家劫舍[1]

题目描述

题面描述略有改动,不影响题意。

你是一个专业的小偷,计划偷窃沿路的电瓶车电瓶。每个电瓶价值不一样,影响你偷窃的唯一制约因素就是相邻的电瓶车装有相互连通的防盗系统,如果两辆相邻的电瓶车的电瓶同时被偷,系统会自动报警。

给定一个代表每辆电瓶车电瓶价值的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。

示例1

输入:
[1,2,3,1]
输出:
4

示例2

输入:
[2,7,9,3,1]
输出:
12

题解

用  表示偷前  辆车电瓶可以获得的最大价值,那么对于第  辆车来说,有两种选择。

如果偷第  辆车的电瓶,那么第  辆车电瓶就不能偷了,能获得的最大价值就是  。

如果不偷第  辆车的电瓶,那么最大价值就等价于偷前  辆车的电瓶能获得的最大价值  。

所以最终取两者最大值即可:

可以发现,每次计算其实只要用到前两个元素,所以每次维护最后两个值即可,可以将空间优化到常数空间。

代码

c++

class Solution {
public:
    int rob(vector<int>& nums) {
        int n = nums.size();
        int prepre = 0, pre = 0, now = 0;
        for (int i = 0; i < n; ++i) {
            now = max(pre, prepre+nums[i]);
            prepre = pre;
            pre = now;
        }
        return now;
    }
};
相关文章
|
5月前
|
算法 测试技术 C#
一题三解(暴力、二分查找算法、单指针):鸡蛋掉落
一题三解(暴力、二分查找算法、单指针):鸡蛋掉落
|
6月前
|
算法
代码随想录算法训练营第七天 | LeetCode 454.四数相加II、383. 赎金信、15. 三数之和、18. 四数之和
代码随想录算法训练营第七天 | LeetCode 454.四数相加II、383. 赎金信、15. 三数之和、18. 四数之和
26 0
|
7月前
|
API
代码随想录 Day6 哈希 LeetcodeT454 四数之和II T383赎金信 T15 三数之和 T18 四数之和
代码随想录 Day6 哈希 LeetcodeT454 四数之和II T383赎金信 T15 三数之和 T18 四数之和
18 0
|
7月前
|
算法
【算法挨揍日记】day04——15. 三数之和、18. 四数之和
题目描述: 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != j、i != k 且 j != k ,同时还满足 nums[i] + nums[j] + nums[k] == 0 。请你返回所有和为 0 且不重复的三元组。
52 0
|
8月前
leetcode 1222. 可以攻击国王的皇后(每日一题)
leetcode 1222. 可以攻击国王的皇后(每日一题)
54 0
|
8月前
校门外的树(三种解法,非直接暴力)
校门外的树(三种解法,非直接暴力)
|
9月前
|
算法
代码随想录算法训练营第七天| 454.四数相加II 383. 赎金信15. 三数之和18. 四数之和
代码随想录算法训练营第七天| 454.四数相加II 383. 赎金信15. 三数之和18. 四数之和
|
12月前
|
人工智能 算法 C++
每日算法系列【LeetCode 354】俄罗斯套娃信封问题
每日算法系列【LeetCode 354】俄罗斯套娃信封问题
|
12月前
LeetCode动态规划—打家劫舍从平板板到转圈圈(198、213)
LeetCode动态规划—打家劫舍从平板板到转圈圈(198、213)
|
数据安全/隐私保护
看我回旋踢题解
看我回旋踢题解
71 0
看我回旋踢题解