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

安徽seo推广公司深圳优化公司找高粱seo服务

安徽seo推广公司,深圳优化公司找高粱seo服务,建设营销型网站不足之处,找人做网站要拿到源代码吗此系列分三章来记录leetcode的有关贪心算法题解,题目我都会给出具体实现代码,如果看不懂的可以后台私信我。 本章目录 1.柠檬水找零2.将数组和减半的最少操作次数3.最大数4.摆动序列5.最长递增子序列6.递增的三元子序列7.最长连续递增序列8.买卖股票的最…

此系列分三章来记录leetcode的有关贪心算法题解,题目我都会给出具体实现代码,如果看不懂的可以后台私信我。

本章目录

  • 1.柠檬水找零
  • 2.将数组和减半的最少操作次数
  • 3.最大数
  • 4.摆动序列
  • 5.最长递增子序列
  • 6.递增的三元子序列
  • 7.最长连续递增序列
  • 8.买卖股票的最佳时机
  • 9.买卖股票的最佳时机II
  • 10.K次取反后最大化的数组和
  • 11.按身高排序
  • 12.优势洗牌

1.柠檬水找零

柠檬水找零
在这里插入图片描述

class Solution {
public:bool lemonadeChange(vector<int>& bills) {int five = 0,ten = 0;for(auto x:bills){if(x==5) five++;else if(x==10){if(five == 0) return false;five--;ten++;}else{if(ten&&five) //贪心{ten--;five--;}else if(five>=3){five -= 3;}else return false;}}return true;}
};

2.将数组和减半的最少操作次数

将数组和减半的最少操作次数
在这里插入图片描述

class Solution {
public:int halveArray(vector<int>& nums) {//贪心+大根堆priority_queue<double> heap;double sum = 0.0;for(auto x:nums){sum += x;heap.push(x);}sum /= 2.0;int count =0;while(sum>0){auto t = heap.top()/2.0;heap.pop();sum -= t;count++;heap.push(t);}return count;}
};

3.最大数

最大数
在这里插入图片描述

class Solution {
public:string largestNumber(vector<int>& nums) {//优化:将整型都转成字符串,通过比较字符串的字典序来比大小vector<string> strs;for(auto x:nums) strs.push_back(to_string(x));sort(strs.begin(),strs.end(),[&](const string& s1,const string& s2){return s1+s2>s2+s1;});string ret;for(auto& s: strs) ret+=s;//处理前导零if(ret[0]=='0') return "0";return ret;}
};

4.摆动序列

摆动序列
在这里插入图片描述

class Solution {
public:int wiggleMaxLength(vector<int>& nums) {//贪心:找极值点,建议大家将nums画成折线图进行观察int n = nums.size();if(n<2) return n;int ret =0,left = 0;for(int i=0;i<n-1;i++){int right = nums[i+1]-nums[i];if(right == 0) continue;if(left*right<=0) ret++; //两边异号left = right;}return ret+1;//最后一个点必要}
};

5.最长递增子序列

最长递增子序列
在这里插入图片描述

class Solution {
public:int lengthOfLIS(vector<int>& nums) {//自己设计一个数组,此数组的每个元素表示存储长度为x的子序列的最后一个元素的最小值int n = nums.size();vector<int> ret;ret.push_back(nums[0]);for(int i=1;i<n;i++){if(nums[i]>ret.back()){ret.push_back(nums[i]);}else{int left = 0,right = ret.size()-1;while(left<right){int mid = (left+right)>>1;if(ret[mid]<nums[i]) left = mid+1;else right = mid;}ret[left] = nums[i];}}return ret.size();}
};

6.递增的三元子序列

递增的三元子序列
在这里插入图片描述

class Solution {
public:bool increasingTriplet(vector<int>& nums) {int a = nums[0],b = INT_MAX;for(int i=1;i<nums.size();i++){if(nums[i]>b) return true;if(nums[i]>a) b = nums[i];else a = nums[i];}return false;}
};

7.最长连续递增序列

最长连续递增序列
在这里插入图片描述

class Solution {
public:int findLengthOfLCIS(vector<int>& nums) {//贪心+双指针int ret = 0,n = nums.size();for(int i=0;i<n;){int j = i+1;while(j<n&& nums[j]>nums[j-1]) j++;ret = max(ret,j-i);i = j;//直接在循环中更新下一个起点的位置,体现了贪心}return ret;}
};

8.买卖股票的最佳时机

买卖股票的最佳时机
在这里插入图片描述

class Solution {
public:int maxProfit(vector<int>& prices) {int ret = 0,minElem = INT_MAX;int n = prices.size();for(int i=0;i<n;i++){ret = max(ret,prices[i]-minElem);//先更新结果minElem = min(minElem,prices[i]);//再更新最小值}return ret;}
};

9.买卖股票的最佳时机II

买卖股票的最佳时机II述
在这里插入图片描述

class Solution {
public:int maxProfit(vector<int>& prices) {//法一:双指针int ret = 0,n = prices.size();for(int i=0;i<n;i++){int j = i;while(j+1<n && prices[j+1]>prices[j]) j++;ret += prices[j]-prices[i];i = j;}return ret;}
};class Solution {
public:int maxProfit(vector<int>& prices) {//法二:一天一天进行计算int ret = 0,n = prices.size();for(int i=1;i<n;i++){if(prices[i]-prices[i-1]>0) ret += (prices[i]-prices[i-1]);}return ret;}
};

10.K次取反后最大化的数组和

K次取反后最大化的数组和
在这里插入图片描述

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

11.按身高排序

按身高排序
在这里插入图片描述

class Solution {
public:vector<string> sortPeople(vector<string>& names, vector<int>& heights) {//1.创建一个下标数组int n = names.size();vector<int> index(n);for(int i=0;i<n;i++) index[i] = i;//2.对下标数组进行排序sort(index.begin(),index.end(),[&](int i,int j){return heights[i]>heights[j];});//3.输出结果vector<string> ret;for(auto x:index){ret.push_back(names[x]);}return ret;}
};

12.优势洗牌

优势洗牌
在这里插入图片描述

class Solution {
public:vector<int> advantageCount(vector<int>& nums1, vector<int>& nums2) {//此题可以学习对应的策略,积累经验int n = nums1.size();//1.排序sort(nums1.begin(),nums1.end());vector<int> index2(n);for(int i=0;i<n;i++) index2[i] = i;sort(index2.begin(),index2.end(),[&](int i,int j){return nums2[i]<nums2[j];});//2.田忌赛马int left = 0,right = n-1;vector<int> ret(n);for(int i=0;i<n;i++){if(nums1[i]>nums2[index2[left]]) ret[index2[left++]] = nums1[i];else ret[index2[right--]] = nums1[i];}return ret;}
};
http://www.zhongyajixie.com/news/18640.html

相关文章:

  • 做中小型网站最好的架构廊坊网络推广优化公司
  • 江苏网站建设哪家快点查询seo
  • 网站建设周期计划泰州百度seo
  • 网站定制论文1500字左右免费seo视频教程
  • 怎么做网站报告排名优化是怎么做的
  • 越南的网站建设南京seo建站
  • 免费建站abc长沙网站推广和优化
  • 广州企业网站找哪里seo职业培训学校
  • wordpress 登录 显示外汇seo公司
  • 岑溪网站开发电子商务说白了就是干什么的
  • 网站建设流程表人民日报最新头条10条
  • 甘肃网络公司网站建设河北百度推广客服电话
  • 网站如何做宣传推广百度推广开户流程
  • 校园网站建设策划书百度快照优化培训班
  • 微信推广网站怎么做网站推广优化服务
  • 做网站推广的难点、秒收录关键词代发
  • 武汉可以做网站的地方想要导航页面推广app
  • 帝国cms使用教程常州百度搜索优化
  • 专业彩票网站开发 APP开发免费大数据分析网站
  • 团购网站自个做seo公司资源
  • 深圳网站运营外包公司广告信息发布平台
  • 做类似58类型网站关于友情链接说法正确的是
  • 包头外贸网站建设电脑系统优化工具
  • 武汉搜索引擎营销网络优化基础知识
  • flash 网站建设引流获客app下载
  • 怎么为做的网站配置域名短视频seo询盘获客系统软件
  • 推荐几个用vue做的网站自媒体135的网站是多少
  • 上海专业网站建设公司在运营中seo是什么意思
  • 杭州做宠物网站的公司哪家好合肥建站公司seo
  • 深圳集团网站建设报价上海网站seo外包