c++贪心

本篇文章,我将同大家一起学习c++的贪心!!!

目录

第一题

题目链接

题目解析

代码原理

代码编写

第二题

题目链接

题目解析

代码原理

代码编写

第三题

题目链接

题目解析

代码原理

代码编写

第四题

题目链接

题目解析

代码原理

代码编写

第五题

题目链接

题目解析

代码原理

代码编写

思路拓展

第六题

题目链接

题目解析

代码原理

代码编写


 

第一题

题目链接

300. 最长递增子序列 - 力扣(LeetCode)

题目解析

代码原理

代码编写

class Solution {

public:

    int lengthOfLIS(vector<int>& nums) {

        int n = nums.size();

        vector<int> ret;

        ret.push_back(nums[0]);

        for(int i = 1; i < n; i++)

        {

            if(ret.back() < nums[i]) 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();

    }

};

第二题

题目链接

334. 递增的三元子序列 - 力扣(LeetCode)

题目解析

解释:三元子序列:条件:1.i - 1  < i < i + 1   2.nums[i - 1] < nums[i] < nums[i + 1]

代码原理

代码编写

class Solution {

public:

    bool increasingTriplet(vector<int>& nums) {

        int n = nums.size();

        int a = nums[0], b = INT_MAX;

        for(int i = 1; i < n; i++)

        {

            if(nums[i] > b) return true;

            else if( nums[i] > a) b = nums[i];

            else a = nums[i];

        }

        return false;

    }

};

第三题

题目链接

674. 最长连续递增序列 - 力扣(LeetCode)

题目解析

代码原理

代码编写

class Solution {

public:

    int findLengthOfLCIS(vector<int>& nums) {

        int n = nums.size(), ret = 0;

        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;

    }

};

第四题

题目链接

121. 买卖股票的最佳时机 - 力扣(LeetCode)

题目解析

代码原理

代码编写

class Solution {

public:

    int maxProfit(vector<int>& prices) {

        int n = prices.size(), ret = 0;

        int min_prices = INT_MAX, max_prices = 0;

        for(int i = 0; i < n; i++)

        {

                min_prices = min(min_prices, prices[i]);

                max_prices = max(max_prices, prices[i] - min_prices);

        }

        return max_prices;

    }

};

第五题

题目链接

122. 买卖股票的最佳时机 II - 力扣(LeetCode)

题目解析

代码原理

代码编写

class Solution {

public:

    int maxProfit(vector<int>& prices) {

        int ret = 0;

        for(int i = 0; i < prices.size(); i++)

        {

            if(i + 1 < prices.size() && prices[i] < prices[i + 1]) ret += prices[i + 1] - prices[i];

        }

        return ret;

    }

};

思路拓展

第一种思路:找到上升段,然后末减初

第二种思路:找到每一上升小段,就进行一次末减初,然后移动右指针,持续计算,求出最大结果

代码

  int n = prices.size();int ret = 0;// for(int left = 0; left < n; left++)// {//     int right = left;//     while(right + 1 < n && prices[right + 1] > prices[right])//     {//         right++;//     }//     ret += prices[right] - prices[left];//     left = right; // }

第六题

题目链接

1005. K 次取反后最大化的数组和 - 力扣(LeetCode)

题目解析

代码原理

代码编写

class Solution {

public:

    int largestSumAfterKNegations(vector<int>& nums, int k) {

        int n = nums.size(), m = 0, min_nums = INT_MAX,ret = 0;

        for(int i = 0; i < n; i++)

        {

            if(nums[i] < 0)

            m++;

            min_nums = min(min_nums, abs(nums[i]));

        }

        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 cur: nums)

            {

                ret += abs(cur);

            }

            if((k - m) % 2)

               ret -= min_nums * 2;

        }

            return ret;

    }

};

注意:这里的最小值一定要记得加绝对值。

本篇文章的内容就先到这里,最后也祝大家除夕快乐,春节快乐!!! 

记得一键三连哦!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/8479.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高低频混合组网系统中基于地理位置信息的信道测量算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 2.算法运行软件版本 matlab2022a 3.部分核心程序 &#xff08;完整版代码包含详细中文注释和操作步骤视频&#xff09…

【Python实现机器遗忘算法】复现2020年顶会CVPR算法Selective Forgetting

【Python实现机器遗忘算法】复现2020年顶会CVPR算法Selective Forgetting 1 算法原理 Golatkar, A., Achille, A., & Soatto, S. (2020). Eternal sunshine of the spotless net: Selective forgetting in deep networks. In Proceedings of the IEEE/CVF Conference on Co…

Linux(NTP配置)

后面也会持续更新&#xff0c;学到新东西会在其中补充。 建议按顺序食用&#xff0c;欢迎批评或者交流&#xff01; 缺什么东西欢迎评论&#xff01;我都会及时修改的&#xff01; NTP环境搭建 服务端客户端192.168.111.10192.168.111.11Linux MySQL5.7 3.10.0-1160.el7.x86_…

神经网络|(四)概率论基础知识-古典概型

【1】引言 前序学习了线性回归的基础知识&#xff0c;了解到最小二乘法可以做线性回归分析&#xff0c;但为何最小二乘法如此准确&#xff0c;这需要从概率论的角度给出依据。 因此从本文起&#xff0c;需要花一段时间来回顾概率论的基础知识。 【2】古典概型 古典概型是我…

21款炫酷烟花合集

系列专栏 《Python趣味编程》《C/C趣味编程》《HTML趣味编程》《Java趣味编程》 写在前面 Python、C/C、HTML、Java等4种语言实现18款炫酷烟花的代码。 Python Python烟花① 完整代码&#xff1a;Python动漫烟花&#xff08;完整代码&#xff09; ​ Python烟花② 完整…

新项目上传gitlab

Git global setup git config --global user.name “FUFANGYU” git config --global user.email “fyfucnic.cn” Create a new repository git clone gitgit.dev.arp.cn:casDs/sawrd.git cd sawrd touch README.md git add README.md git commit -m “add README” git push…

Brightness Controller-源码记录

Brightness Controller 亮度控制 一、概述二、ddcutil 与 xrandr1. ddcutil2. xrandr 三、部分代码解析1. icons2. ui3. utilinit.py 一、概述 项目&#xff1a;https://github.com/SunStorm2018/Brightness.git 原理&#xff1a;Brightness Controlle 是我在 Ubuntu 发现上调…

机器学习-K近邻算法

文章目录 一. 数据集介绍Iris plants dataset 二. 代码三. k值的选择 一. 数据集介绍 鸢尾花数据集 鸢尾花Iris Dataset数据集是机器学习领域经典数据集&#xff0c;鸢尾花数据集包含了150条鸢尾花信息&#xff0c;每50条取自三个鸢尾花中之一&#xff1a;Versicolour、Setosa…

Day27-【13003】短文,线性表两种基本实现方式空间效率、时间效率比较?兼顾优点的静态链表是什么?如何融入空闲单元链表来解决问题?

文章目录 本次内容总览第四节&#xff0c;两种基本实现方式概览两种基本实现方式的比较元素个数n大于多少时&#xff0c;使用顺序表存储的空间效率才会更高&#xff1f;时间效率比较&#xff1f;*、访问操作&#xff0c;也就是读运算&#xff0c;读操作1、插入&#xff0c;2、删…

JavaSE第十一天——集合框架Collection

一、List接口 List接口是一个有序的集合&#xff0c;允许元素有重复&#xff0c;它继承了Collection接口&#xff0c;提供了许多额外的功能&#xff0c;比如基于索引的插入、删除和访问元素等。 常见的List接口的实现类有ArrayList、LinkedList和Vector。 List接口的实现类 …

数据结构与算法学习笔记----求组合数

数据结构与算法学习笔记----求组合数 author: 明月清了个风 first publish time: 2025.1.27 ps⭐️一组求组合数的模版题&#xff0c;因为数据范围的不同要用不同的方法进行求解&#xff0c;涉及了很多之前的东西快速幂&#xff0c;逆元&#xff0c;质数&#xff0c;高精度等…

kaggle社区LLM Classification Finetuning

之前有个一样的比赛&#xff0c;没去参加&#xff0c;现在弄了一个无限期的比赛出来 训练代码链接&#xff1a;fine_tune | Kaggle 推理代码链接&#xff1a;https://www.kaggle.com/code/linheshen/inference-llama-3-8b?scriptVersionId219332972 包链接&#xff1a;pack…

【Python实现机器遗忘算法】复现2021年顶会 AAAI算法Amnesiac Unlearning

【Python实现机器遗忘算法】复现2021年顶会 AAAI算法Amnesiac Unlearning 1 算法原理 论文&#xff1a;Graves, L., Nagisetty, V., & Ganesh, V. (2021). Amnesiac machine learning. In Proceedings of the AAAI Conference on Artificial Intelligence, volume 35, 115…

51单片机开发:点阵屏显示数字

实验目标&#xff1a;在8x8的点阵屏上显示数字0。 点阵屏的原理图如下图所示&#xff0c;点阵屏的列接在P0端口&#xff0c;行接在74HC595扩展的DP端口上。 扩展口的使用详见&#xff1a;51单片机开发&#xff1a;IO扩展(串转并)实验-CSDN博客 要让点阵屏显示数字&#xff0…

买卖股票的最佳时机 II

hello 大家好&#xff01;今天开写一个新章节&#xff0c;每一天一道算法题。让我们一起来学习算法思维吧&#xff01; 问题分析 本题要求计算在可以多次买卖股票&#xff08;但任何时候最多只能持有一股股票&#xff0c;也可以在同一天买卖&#xff09;的情况下能获得的最大…

2024年度总结——理想的风,吹进现实

2024年悄然过去&#xff0c;留下了太多美好的回忆&#xff0c;不得不感慨一声时间过得真快啊&#xff01;旧年风雪尽&#xff0c;新岁星河明。写下这篇博客&#xff0c;记录我独一无二的2024年。这一年&#xff0c;理想的风终于吹进现实&#xff01; 如果用一句话总结这一年&am…

LosslessScaling-学习版[steam价值30元的游戏无损放大/补帧工具]

LosslessScaling 链接&#xff1a;https://pan.xunlei.com/s/VOHc-yZBgwBOoqtdZAv114ZTA1?pwdxiih# 解压后运行"A-绿化-解压后运行我.cmd"

CVE-2020-0796永恒之蓝2.0(漏洞复现)

目录 前言 产生原因 影响范围 漏洞复现 复现环境 复现步骤 防御措施 总结 前言 在网络安全的战场上&#xff0c;漏洞一直是攻防双方关注的焦点。CVE-2020-0796&#xff0c;这个被称为 “永恒之蓝 2.0” 的漏洞&#xff0c;一度引起了广泛的关注与担忧。它究竟是怎样的…

计算机网络 (61)移动IP

前言 移动IP&#xff08;Mobile IP&#xff09;是由Internet工程任务小组&#xff08;Internet Engineering Task Force&#xff0c;IETF&#xff09;提出的一个协议&#xff0c;旨在解决移动设备在不同网络间切换时的通信问题&#xff0c;确保移动设备可以在离开原有网络或子网…

node 爬虫开发内存处理 zp_stoken 作为案例分析

声明: 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01; 前言 主要说3种我们补环境过后如果用…