2023-09-17力扣每日一题

链接:

213. 打家劫舍 II

题意

n个数字围成一圈,禁止取相邻,求能取到的最大值

经典DP+特判/一丢丢思维

可以开个bool判断第一个取没取,然后判断最后一个,同样,再倒着做一遍即可

思维:把0到lg-2 和 1到lg-1各做一遍即可

实际代码:

c++ 复制代码
#include<bits/stdc++.h>
using namespace std;
int rob(vector<int>& nums)
{
	int lg=nums.size();
	vector<int>nums1(lg),nums2(lg);
	if(lg==1) return nums[0];
	if(lg==2) return max(nums[0],nums[1]);
	
	nums1[0]=nums[0];nums1[1]=max(nums[0],nums[1]);
	for(int i=2;i<lg-1;i++)
	{
		nums1[i]=max(nums1[i-1],nums1[i-2]+nums[i]);
	}
	nums2[1]=nums[1];nums2[2]=max(nums[1],nums[2]);
	for(int i=3;i<lg;i++)
	{
		nums2[i]=max(nums2[i-1],nums2[i-2]+nums[i]);
	}
	
	return max(nums1[lg-2],nums2[lg-1]);
}

限制:

  • 1 <= nums.length <= 100
  • 0 <= nums[i] <= 1000
相关推荐
alphaTao9 小时前
LeetCode 每日一题 2026/5/4-2026/5/10
算法·leetcode·职场和发展
小智老师PMP9 小时前
PMP6月考前最后1个月冲刺攻略
算法·软件工程·求职招聘·产品经理·敏捷流程
MATLAB代码顾问9 小时前
哈里斯鹰优化算法(HHO)原理与Python实现
python·算法·机器学习
何陋轩9 小时前
Spring AI + RAG实战:打造企业级智能问答系统
后端·算法·设计模式
叼烟扛炮10 小时前
C++第五讲:内存管理
c++·算法·面试·内存管理
Tisfy10 小时前
LeetCode 3629.通过质数传送到达终点的最少跳跃次数:埃式筛+BFS
算法·leetcode·宽度优先·质数·埃式筛
Hello.Reader10 小时前
算法基础(九)——循环不变式如何证明一个算法是正确的
java·开发语言·算法
wuweijianlove10 小时前
算法稳定性分析中的输入扰动建模的技术7
算法
MATLAB代码顾问10 小时前
粒子群优化算法(PSO)原理与Python高级实现
开发语言·python·算法
Epiphany.55610 小时前
连通块的遍历
c++·算法·蓝桥杯