当前位置: 首页 > news >正文

社区网站做的比较好的有哪些电商培训视频教程

社区网站做的比较好的有哪些,电商培训视频教程,建设英文外贸网站,今天最新体育新闻代码随想录算法训练营第五十天 198.打家劫舍 题目链接:198.打家劫舍 确定dp数组以及下标的含义:dp[i]:考虑下标i(包括i)以内的房屋,最多可以偷窃的金额为dp[i]。确定递推公式:max(dp[i - 1],…

代码随想录算法训练营第五十天

198.打家劫舍

题目链接:198.打家劫舍

  1. 确定dp数组以及下标的含义:dp[i]:考虑下标i(包括i)以内的房屋,最多可以偷窃的金额为dp[i]。
  2. 确定递推公式:max(dp[i - 1], dp[i - 2] + nums[i]);,不偷当前节点和偷当前节点哪个获利最大就取哪个
  3. dp数组如何初始化:dp[0]=nums[0],只有一个必须偷。dp[1]=max(nums[0],nums[1])一共2个元素,只能偷一个最大的
  4. 确定遍历顺序:从前向后遍历。
  5. 打印dp数组。
class Solution {
public:int rob(vector<int>& nums) {if (nums.size() == 1)return nums[0];vector<int> dp(nums.size(), 0);dp[0] = nums[0];dp[1] = max(nums[0], nums[1]);for (int i = 2; i < nums.size(); i++) {dp[i] = max(dp[i - 1], dp[i - 2] + nums[i]);}return dp[nums.size() - 1];}
};

213.打家劫舍II

题目链接:213.打家劫舍II
偷第一家就不能偷最后一家,偷最后一家就不能偷第一家,分别将两种状态求出,再从二者之间找最大值。两种情况分别可以用上题方法求解。

class Solution {
public:int Rob(vector<int>& nums,int start, int end){if(start==end)return nums[start];vector<int> dp(nums.size(), 0);dp[start] = nums[start];dp[start+1] = max(nums[start], nums[start+1]);for (int i = start+2; i <= end; i++) {dp[i] = max(dp[i - 1], dp[i - 2] + nums[i]);}return dp[end];}int rob(vector<int>& nums) {if(nums.size()==1)return nums[0];int first = Rob(nums,0,nums.size()-2);int last = Rob(nums, 1, nums.size()-1);return max(first,last);}
};

337.打家劫舍III

题目链接:337.打家劫舍III
dp数组表示,每个节点偷当前节点和不偷当前节点可以取得的最大价值。要求当前节点值需要知道左右节点的值,所以是后序遍历。最后再偷根节点和不偷根节点之间取一个最大值即可。

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:vector<int> Rob(TreeNode* cur){if(cur==nullptr)return {0,0};vector<int> left = Rob(cur->left);vector<int> right = Rob(cur->right);vector<int>dp(2);//定义一个dp数组dp[0]表示当前节点不偷可以获得的最大金币,dp[1]表示偷当前节点可以获得的最大金币dp[0] = max(left[0],left[1])+max(right[0],right[1]);//不偷当前节点,那它的子节点可以选择偷或者不偷,左子偷不偷选最大的+右子偷不偷选最大的dp[1] = left[0]+right[0]+cur->val;//偷当前节点,左右子都不能偷,所以等于左不偷+右不偷+当前节点的值return dp;}int rob(TreeNode* root) {return max(Rob(root)[0],Rob(root)[1]);}
};

http://www.mmbaike.com/news/33397.html

相关文章:

  • 动态网站搭建方案百度快照优化的优势是什么
  • 请收网址999938seo深度解析
  • 如何使用阿里云建站网站怎么做的
  • 网站安全检测在线整合营销策划
  • 电子工程网络工程维修记录次数武汉seo报价
  • 青岛的互联网企业班级优化大师网页版登录
  • 淄博网站推广价格网络营销的四大要素
  • 英国做网站的人四川省人民政府官网
  • 长沙网上商城网站建设方案搜索引擎优化网站排名
  • 网络游戏代理关键字排名优化工具
  • 文成网站制作本周新闻热点事件
  • 张家明做网站南京网站建设
  • 开个网站多少钱一年seo管理系统培训
  • 好看的网站后台界面中国推广网站
  • 网站使用字体网络营销推广策划书
  • 电商建网站百度收录站长工具
  • 做房产中介网站珠海优化seo
  • 建设网站的公司兴田德润实力强ks免费刷粉网站推广
  • 任丘 做网站武汉seo搜索引擎
  • 网站经营性备案多少钱深圳做网站的
  • 网站备案最快几天哪里有整站优化
  • 网站建设北京公司长沙seo优化服务
  • 企业网站图片上传衡阳网站建设公司
  • 南通网站排名优化沧州百度推广公司
  • 织梦可以做相亲网站虎门今日头条新闻
  • 网站建设元素如何叠加影视后期培训班一般要多少钱
  • 提高百度快速排名杭州最好的seo公司
  • 网站域名查询地址制造业中小微企业
  • wordpress地图定位seo优化软件哪个好
  • 郑州艾特软件 网站建设1688关键词怎么优化