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

成都的网站建设公司搭建自己的网站

成都的网站建设公司,搭建自己的网站,如何办理网站,藁城区建设局网站目录 一、k次取反后最大化的数组和 二、优势洗牌 三、最长回文串 四、增减字符串匹配 一、k次取反后最大化的数组和 k次取反后最大化的数组和 贪心策略&#xff1a; 解题代码&#xff1a; class Solution { public:int largestSumAfterKNegations(vector<int>&am…

目录

一、k次取反后最大化的数组和

二、优势洗牌

三、最长回文串 

四、增减字符串匹配


一、k次取反后最大化的数组和

k次取反后最大化的数组和

贪心策略:

解题代码: 

class Solution 
{
public:int largestSumAfterKNegations(vector<int>& nums, int k) {int m = 0;int min_elec = INT_MAX;for(auto& x:nums){if(x < 0)m++;min_elec = min(min_elec, abs(x));}sort(nums.begin(), nums.end());int ret = 0;if(m > k){for(int i = 0; i < nums.size(); i++){if(i < k){ret += -nums[i];continue;}ret += nums[i];}}else{for(auto& x : nums)ret += abs(x);if((k-m) % 2)ret -= 2*min_elec;}return ret;}
};


二、优势洗牌

优势洗牌

引例:田忌赛马 

田忌赛马的故事,我相信大家都知道。赛马的要求就是:上等马对上等马,中等马对中等马,下等马对下等马。因为齐王的上中下等马,都依次比田忌的上中下等马好一些,所以无论怎么比,田忌都无法获胜。

而孙膑给田忌出了个注意:田忌的下等马对齐王的上等马,中等马对下等马,上等马对中等马。这样,虽然齐王的上等马对田忌的下等马是场碾压式的胜利,可是另外两场,田忌都可以获胜。总的来说,就是田忌获胜了。

而我们这道题的贪心策略就可以从田忌赛马中获得启发。

贪心策略:

我们根据示例二来模拟一下解题过程。

我们需要先对数组进行排序。贪心策略对于田忌赛马的思想运用,就是对于同一位置来说,如果nums1的值小于nums2的值, 那么我们就拿nums1的值去匹配nums2中没有被匹配元素的最大元素。

解题代码:

class Solution 
{
public:vector<int> advantageCount(vector<int>& nums1, vector<int>& nums2) {int m = nums1.size();sort(nums1.begin(), nums1.end());vector<int> index(m);for(int i = 0; i < m; i++)index[i] = i;sort(index.begin(), index.end(), [&](int i, int j){return nums2[i] < nums2[j];});vector<int> ret(m);int left = 0, right = m-1;for(auto& x:nums1){if(x <= nums2[index[left]]){ret[index[right]] = x;right--;}else if(x > nums2[index[left]]){ret[index[left]] = x;left++;}}return ret;}
};


三、最长回文串 

最长回文串

贪心策略:

1、先统计字符串s中,各个字符的个数。

2、如果某个字符的个数是偶数,那么所有的这个字符都可以去构成回文串。

3、如果有字符的个数是奇数,那么可以选择其中一个字符放在中间,如下:

注:设一个字符个数为x,那么该字符可以构成回文串的个数为 x / 2 * 2。 

解题代码: 

class Solution 
{
public:int longestPalindrome(string s) {int hash[127] = {0};for(auto& e:s)hash[e]++;int len = 0;for(int i = 0; i < 127; i++)len += hash[i] / 2 * 2;return len == s.size() ? len : len+1;}
};


四、增减字符串匹配

增减字符串匹配

贪心策略: 

1、当遇到 'I',选择当前能够选择的最小的数。

2、当遇到 'D',选择当前能够选择的最大的数。 

解题代码:

class Solution 
{
public:vector<int> diStringMatch(string s) {int n = s.size();vector<int> ret;int left = 0, right = n;for(auto& e : s){if(e == 'I')ret.push_back(left++);elseret.push_back(right--);}ret.push_back(left);return ret;}
};

http://www.khdw.cn/news/65829.html

相关文章:

  • 网站前端建设都需要什么windows优化大师官方
  • 新闻网页制作教程seo网站分析
  • 网站登陆模板山西seo
  • 买个域名自己做网站网站优化招聘
  • 找人做网站被骗怎么办综合权重查询
  • 做网站不要盲目跟风韩国电视剧
  • 网站上的二维码seo免费浏览网站
  • 软件项目管理pdfsem与seo的区别
  • 做网站和做微商城有什么区别十大广告投放平台
  • 万盛集团网站建设海外营销方案
  • 厦门做网站找谁seo怎么推排名
  • 色一把做最好的看片网站广州 关于进一步优化
  • 做bc网站付费推广方式有哪些
  • 网站后台照片限制200k怎么修改关键词站长工具
  • 邢台如何做企业网站百度客服24小时人工服务在线咨询
  • 做网站赚钱的时代过去了吗搜索引擎优化缩写
  • 幼儿园网站设计代码广州公司关键词网络推广
  • 华亭县建设局网站2017北京seo诊断
  • 网站建设500元免费crm
  • wordpress 内容 管理员查看毕节地seo
  • 秦皇岛微信群seo专业课程
  • 网站模板排名seo搜索引擎营销工具
  • 如何做自己的网站商城站网页制作网站
  • 网站开发工资多少公司域名查询官网
  • 义乌企业网站搭建首选ip软件点击百度竞价推广
  • 做网站靠什么赚钱优化公司治理结构
  • 郑州最好的妇科医院seo资讯
  • 深圳常平网站建设制作公司百度关键词优化策略
  • 营销网站设计与规划方案谷歌sem和seo区别
  • 竞价在什么网站上做百度优化是什么意思