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
相关推荐
仍然.7 小时前
算法题目---BFS解决最短路问题
算法·宽度优先
渡众机器人7 小时前
第八届全球校园人工智能算法精英大赛-算法应用赛-空地协同侦排挑战赛规则
人工智能·算法
wayz117 小时前
Overlap:HWMA(Holt-Winter移动平均线)技术指标详解
算法·金融·数据分析·量化交易·特征工程
Shadow(⊙o⊙)7 小时前
专题四:前缀和
数据结构·算法
JAVA面经实录9177 小时前
高频算法面试题
java·计算机网络·算法·面试
qq_452396237 小时前
第十一篇:《资源管理:Requests/Limits、ResourceQuota、LimitRange》
算法·贪心算法
Tisfy7 小时前
LeetCode 2095.删除链表的中间节点:两次遍历 / 一次遍历(快慢指针)
算法·leetcode·链表·题解·双指针
Irissgwe8 小时前
AVL树详解
数据结构·c++·算法·二叉树·c·二叉搜索树·avl
凌波粒8 小时前
LeetCode--131.分割回文串(回溯算法)
算法·leetcode·职场和发展
北域码匠8 小时前
奇偶归并排序:并行计算的排序利器
数据结构·算法·c#·排序算法