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

系统供应商东莞seo优化团队

系统供应商,东莞seo优化团队,石家庄网站推广报价,免费qq空间访客网站1.买卖股票的最佳时机 暴力解法就是两层循环&#xff0c;找出两个差值最大的即可。 优化&#xff1a;在找最小的时候不用每次都循环一遍&#xff0c;只要在i向后走的时候&#xff0c;每次记录一下最小的值即可 class Solution { public:int maxProfit(vector<int>& p…

1.买卖股票的最佳时机

在这里插入图片描述

暴力解法就是两层循环,找出两个差值最大的即可。 优化:在找最小的时候不用每次都循环一遍,只要在i向后走的时候,每次记录一下最小的值即可

class Solution {
public:int maxProfit(vector<int>& prices) {int n=prices.size();int ret=0;for(int i=0,prevMin=INT_MAX;i<n;i++)//i是卖的那一天{//1.先更新结果ret=max(ret,prices[i]-prevMin);//2.更新最小值prevMin=min(prices[i],prevMin);}return ret;}
};

2.买卖股票的最佳时机Ⅱ

在这里插入图片描述
在这里插入图片描述

只需要在每次上升到最高点的时候卖掉即可,这样+起来的总和就是最高利润;

  • 当prices[j+1]>prices[j] 时,就让j++
  • 走到prices[j+1]<prices[j]就让,i++,j=i 继续向后寻找,直到出现prices[j+1]>prices[j]
class Solution {
public:int maxProfit(vector<int>& prices) {int n=prices.size();int ret=0;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;}
};

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

在这里插入图片描述
我们设m是整个数组中负数的个数,那么就根据m和k的大小进行分类讨论

  • m>k (先排序)反转前k个数,再相加
  • m==k 把所有的数都当成正数加起来
  • m<k
  •    1.当k-m是偶数时,就和m==k情况相同
    
  •      2.当k-m是奇数时,把绝对值最小的那个数变成负数即可
    
class Solution {
public:int largestSumAfterKNegations(vector<int>& nums, int k) {int m = 0;int minElm = INT_MAX;for (int i = 0; i < nums.size(); i++) {if (nums[i] < 0)m++;minElm = min(minElm, abs(nums[i]));}int ret = 0;// 分类讨论if (m > k) {sort(nums.begin(), nums.end());for (int i = 0; i < k; i++) {ret += abs(nums[i]);}for (int i = k; i < nums.size(); i++) {ret += nums[i];}} else if (m == k) {for (int i = 0; i < nums.size(); i++)ret += abs(nums[i]);} else {if ((k - m) % 2 == 0) // 偶数{for (int i = 0; i < nums.size(); i++)ret += abs(nums[i]);}else{for (int i = 0; i < nums.size(); i++)ret += abs(nums[i]);ret=ret-2*minElm;}}return ret;}
};

4.按身高排序

在这里插入图片描述

  1. 创建一个下标数组
  2. 仅需对下标数组排序(根据身高进行排序规则的改变)
  3. 根据下标找到对应的字符串 在这里插入图片描述
class Solution {
public:vector<string> sortPeople(vector<string>& names, vector<int>& heights) {//创建一个数组下标int n=heights.size();vector<int> v(n);for(int i=0;i<n;i++)v[i]=i;//重写sort的比较方法sort(v.begin(),v.end(),[&](int i,int j){return heights[i]>heights[j];});//通过下表找到响应的字符串vector<string> ret;for(int i:v){ret.push_back(names[i]);}return ret;}
};

优势洗牌(田忌赛马)

在这里插入图片描述

排序(贪心)

  1. 最差的能比过就直接比
  2. 比不过就去跟对面最大的比,废物利用最大化

步骤:
先对两个数组排序,然后用贪心的思想去排序,这样出来的结果和题目的实例是不一样的;
原因就在于题目的nums2没有排序,所以我们就要用到身高那一题的思想用下标数组来解决,
创建一个index数组,数组的排序规则就是比较nums2中的大小,然后再index数组中创建一个left和right用来记录最大值和最小值

class Solution {
public:vector<int> advantageCount(vector<int>& nums1, vector<int>& nums2) {int n=nums2.size();vector<int> ret(n);//存放结果vector<int> index(n);//下标数组for(int i=0;i<n;i++){index[i]=i;}sort(nums1.begin(),nums1.end());//下标数组排序sort(index.begin(),index.end(),[&](int p1,int p2){return nums2[p1]<nums2[p2];});//记录index的左右两边int left=0,right=n-1;for(int i=0;i<n;i++){//贪心:比得过就比,比不过就跟最大的比if(nums1[i]>nums2[index[left]]){ret[index[left++]]=nums1[i];}else{ret[index[right--]]=nums1[i];}}return ret;}
};
http://www.dtcms.com/wzjs/281464.html

相关文章:

  • 中土南方建设有限公司网站石家庄seo优化
  • 毕业设计代做网站新闻热点事件
  • 网站有可能搜不到吗个人网页怎么制作
  • 蓟州农家院如何做网站营销推广方案案例
  • 点餐网站模板 手机端网站关键词优化办法
  • 悟空crm系统网站seo入门基础教程书籍
  • 淄博外贸网站制作竞价账户
  • wordpress做网站卡吗域名注册局
  • 长春网站网站推广公司设计关键词排名零芯互联排名
  • 常德营销型网站建设手机百度网盘网页版登录入口
  • 南昌网站建设专业公司优化工具箱下载
  • 万户做的网站安全吗营销推广型网站
  • db11t 221-2008政府网站建设与管理规范如何进行市场推广
  • 有哪些好的做兼职的网站有哪些网络营销是做什么的工作
  • 做慕斯蛋糕那个网站有视频免费发布推广信息的平台有哪些
  • 重庆知名网站建设免费google chrome download
  • 聊城做网站推广百度上的广告多少钱一个月
  • 网站推广营销效果seo云优化是什么意思
  • 哪个网站做h5比较好荥阳网站优化公司
  • 网站推广优化趋势如何设计企业网站
  • 上饶市建设局网站百度问问我要提问
  • 新疆建设兵团关键词优化的五个步骤
  • 网站建设日期如何查询郴州seo外包
  • 建设手机银行网站百度seo软件优化
  • 做返利网站怎麼营销软件商城
  • 建设网站思维导图百度关键词网站排名优化软件
  • 营销型企业网站建设教案如何创建网站教程
  • 厚街网站建设费用营销推广方案设计
  • 广州响应式网站制作网站排名大全
  • 网站建设投标文档百度搜一下