九日集训 Day6 贪心

段过 2022-04-21 23:59:19

目录

0.两个数对之间的最大乘积差

1.三角形的最大周长

2.数组拆分 I

3.救生艇


0.两个数对之间的最大乘积差

class Solution {
public:
    int maxProductDifference(vector<int>& nums) {
        sort(nums.begin(),nums.end());
        int sz =nums.size();
        return nums[sz-1]*nums[sz-2]-nums[0]*nums[1];
    }
};

 

1.三角形的最大周长

class Solution {
public:
    int largestPerimeter(vector<int>& nums) {
        sort(nums.begin(),nums.end());
        for(int i=nums.size()-1;i>=2;i--){
            if(nums[i-1]+nums[i-2]>nums[i]){
                return nums[i-1]+nums[i-2]+nums[i];
            }
        }
        return 0;
    }
};

 

2.数组拆分 I

class Solution {
public:
    int arrayPairSum(vector<int>& nums) {
        sort(nums.begin(),nums.end());
        int sz=nums.size();
        int minsum=0;
        for(int i=0;i<sz;i+=2)
        {
            minsum+=nums[i];
        }
        return minsum;
    }
};

 

3.救生艇

class Solution {
public:
    int numRescueBoats(vector<int>& people, int limit) {
        int sz =people.size();
        sort(people.begin(),people.end());
        auto l=0;
        auto r=sz-1;
        int amount=0;
        while(l<=r)
        {
            if(l==r)
            {
                amount++;
                break;
            }
            else if(people[l]+people[r]>limit)
            {
                amount++;
                r--;
            }
            else
            {
                amount++;
                l++; r--;
            }
        }
        return amount;
    }
};

 

4.摆动排序 II

class Solution {
public:
    void wiggleSort(vector<int>& nums) {
        int sz=nums.size();
        int r=sz-1;
        sort(nums.begin(),nums.end());
        vector<int> ans=nums;
        for(int i=1;i<sz;i+=2)
        {
            nums[i]=ans[r--];
        }
        for(int i=0;i<sz;i+=2)
        {
            nums[i]=ans[r--];
        }
    }
};

n/2 < n > n/2+1 < n-1 > .........n/2-1 >0

 

5.分发饼干

class Solution {
public:
    int findContentChildren(vector<int>& g, vector<int>& s) {
        int g_sz=g.size(); int s_sz=s.size();
        int ans=0;
        int i=g_sz-1, j=s_sz-1;
        sort(g.begin(),g.end());
        sort(s.begin(),s.end());
        while(i>=0&&j>=0)
        {  
            if(s[j]>=g[i])
            {
                ++ans;
                --i, --j;
            }
            else
            {
                --i;
            }
        }
        return ans;
    }
};

 

6.最少操作使数组递增

class Solution {
public:
    int minOperations(vector<int>& nums) {
        int sz=nums.size();
        int ans=0;
        for(int i=1;i<sz;++i)
        {
            if(nums[i]<=nums[i-1])
            {
                ans+= nums[i-1]-nums[i]+1;
                nums[i]=nums[i-1]+1;
            }
        }
        return ans;
    }
};

 

7.使数组唯一的最小增量

类似上一题,不过要先排序

class Solution {
public:
    int minIncrementForUnique(vector<int>& nums) {
        int sz=nums.size();
        sort(nums.begin(),nums.end());
        int ans=0;
        for(int i=1;i<sz;++i)
        {
            if(nums[i]<=nums[i-1])
            {
                ans+= nums[i-1]-nums[i]+1;
                nums[i]=nums[i-1]+1;
            }
        }
        return ans;
    }
};

 

8.有效三角形的个数

 

...全文
90 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
RubyonRails九日学习计划(含相关软件及书籍)时间 内容 目的
第一天 学习oracle 基本工具掌握 plsql ,sql语言,范式,索引,数据库安全,数据备份,导入导出。 熟练掌握SQL语言
第二天 1. ruby 语言历史和特性介绍,rails框架历史和特性介绍。参考资料《Ruby on Rails 实践.pdf》。
2. 搭建ruby on rails 开发环境并熟悉开发环境。用到的软件在《软件工具》目录。
3. 给学生展示《Ruby on Rails 实践.pdf》中的示例快速建立简单应用。
4. 指导学生完成《Ruby on Rails 实践.pdf》中的内容。 使学生对ruby和rails产生感性认识。
第三天 完成《Ruby语言入门教程》,并上机调试 熟悉Ruby语言基本语法和常用函数
第四天 完成《Ruby语言进阶教程》,并上机调试
第五天 按照《应用Rails进行敏捷Web开发.pdf》学习第二部分购物车示例。
教学第五章节到第七章节内容。 灌输学生敏捷开发方法。
第六天 继续完成第八章到第九章内容。
第七天 继续完成第十章到第11章内容。
第八天 回顾前几天内容。
如果前面几天任务量没有完成那么 继续完成前面几天的内容。 交流总结。
第九天 完成新闻系统需求分析和设计,并有相关文档。主要功能点是:
1. 新闻发布(标题、内容(1000个汉字即可)、新闻分类、有效期)
2. 新闻的分类
3. 新闻列表显示(能翻页)
4. 新闻的详细内容显示 实践和个人能力的展示。
不拘一格尽量让学生自己发挥。
考察学生编程思想、代码规范、设计思想、功能完善、人性化设计、以及界面等方面。

64,199

社区成员

发帖
与我相关
我的任务
社区描述
学习「 算法 」的捷径就是 「 题海战略 」,社区由「 夜深人静写算法 」作者创建,三年ACM经验,校集训队队长,亚洲区域赛金牌,世界总决赛选手。社区提供系统的训练,答疑解惑,面试经验,大厂内推等机会
社区管理员
  • 英雄哪里出来
  • 芝麻粒儿
  • Amy卜bo皮
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

QQ群:480072171

英雄算法交流 8 群

 

试试用AI创作助手写篇文章吧