C++数据结构与算法——贪心算法中等题

C++第二阶段——数据结构和算法,之前学过一点点数据结构,当时是基于Python来学习的,现在基于C++查漏补缺,尤其是树的部分。这一部分计划一个月,主要利用代码随想录来学习,刷题使用力扣网站,不定时更新,欢迎关注!

文章目录

  • 一、376. 摆动序列
  • 二、738.单调递增的数字
  • 三、122. 买卖股票的最佳时机 II
  • 四、135. 分发糖果
  • 五、406. 根据身高重建队列

一、376. 摆动序列

在这里插入图片描述

class Solution {
public:
    int wiggleMaxLength(vector<int>& nums) {
        if(nums.size()==1) return 1;
        int before=0;// 记录前坡度
        int after=0; // 记录后坡度
        int result;
        for(int i=0;i<nums.size()-1;i++){
            after = nums[i+1]-nums[i];
            if((before>=0&&after<0)||(before<=0&&after>0)){
                result++;
                // 此时更新before
                before = after;
            }
        }
        return result;
    } 
};

在这里插入图片描述

二、738.单调递增的数字

在这里插入图片描述

class Solution {
public:
    int monotoneIncreasingDigits(int n) {
        string num = to_string(n);
        int flag =num.size();
        for(int i=num.size()-1;i>0;i--){
            if(num[i] < num[i-1]){
                flag = i;
                num[i-1]--;
            }
        }
        for(int i= flag;i<num.size();i++){
            num[i] = '9';
        }
        return stoi(num);
    }
};

在这里插入图片描述

三、122. 买卖股票的最佳时机 II

在这里插入图片描述

class Solution {
public:
    int maxProfit(vector<int>& prices) {
        // 收集每天的正利润
        int result =0;
        for(int i=0;i<prices.size()-1;i++){
            if(prices[i+1]-prices[i]>0){
                result+= (prices[i+1]-prices[i]);
            }
        }
        return result;
    }
};

在这里插入图片描述

四、135. 分发糖果

在这里插入图片描述

class Solution {
public:
    int candy(vector<int>& ratings) {
        // 定义一个列表用来存放每个孩子应得的糖果数,最后遍历获得结果
        vector<int> v(ratings.size(),1);
        int result =0;
        // 先处理右边,如果右孩子比左孩子分数高,那么右孩子+1;
        for(int i=1;i<ratings.size();i++){
            if(ratings[i]>ratings[i-1]){
                v[i] =v[i-1]+1;
            }

        }
        // 再处理左边,如果左孩子比右孩子分数高,那么左孩子+右孩子的糖果,从后向前遍历
        for(int i=ratings.size()-2;i>=0;i--){
            if(ratings[i]>ratings[i+1]){
                v[i] = max(v[i],v[i+1]+1);
            }
        }
        for(int num:v){
            result+= num;
        }
        return result;
    }
};

在这里插入图片描述

五、406. 根据身高重建队列

在这里插入图片描述

class Solution {
public:
    // 根据身高先对数组进行重新排列
    static bool cmp(const vector<int> &a,const vector<int> &b){
        if(a[0]== b[0]) return a[1]<b[1];
        return a[0]>b[0];
    }
    vector<vector<int>> reconstructQueue(vector<vector<int>>& people) {
        sort(people.begin(),people.end(),cmp);
        // 遍历然后重新排序
        vector<vector<int>> que;
        for(int i=0;i<people.size();i++){
            // 根据k进行插入
            int k = people[i][1];
            que.insert(k+que.begin(),people[i]);
        }
        return que;
    }
};

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

分享Fork/Join经典案例

shigen坚持更新文章的博客写手&#xff0c;擅长Java、python、vue、shell等编程语言和各种应用程序、脚本的开发。记录成长&#xff0c;分享认知&#xff0c;留住感动。 个人IP&#xff1a;shigen 在上一篇的文章java 多线程分治求和&#xff0c;太牛了的文章中&#xff0c;提到…

Docker使用— Docker部署安装Nginx

Nginx简介 Nginx 是一款高性能的 web 服务器、反向代理服务器以及电子邮件&#xff08;IMAP/POP3/SMTP&#xff09;代理服务器&#xff0c;由俄罗斯开发者伊戈尔塞索耶夫&#xff08;Igor Sysoev&#xff09;编写&#xff0c;并在2004年10月4日发布了首个公开版本0.1.0。Nginx…

因为使用ArrayList.removeAll(List list)导致的机器重启

背景 先说一下背景&#xff0c;博主所在的业务组有一个核心系统&#xff0c;需要同步两个不同数据源给过来的数据到redis中&#xff0c;但是每次同步之前需要过滤掉一部分数据&#xff0c;只存储剩下的数据。每次同步的数据与需要过滤掉的数据量级大概在0-100w的数据不等。 由…

鸿蒙HarmonyOS开发实例:【简单时钟】

简单时钟 介绍 本示例通过使用[ohos.display]接口以及Canvas组件来实现一个简单的时钟应用。 效果预览 主页 使用说明 1.界面通过setInterval实现周期性实时刷新时间&#xff0c;使用Canvas绘制时钟&#xff0c;指针旋转角度通过计算得出。 例如&#xff1a;"2 * M…

三角测量法恢复深度

参考&#xff1a;单目vo中的深度确定方法--三角测量_单目相机三角测量-CSDN博客 方法一&#xff1a;直接法 由于我们已经通过本质矩阵分解或者单应矩阵分解获得了R与t&#xff0c;此时想求的是两个特征点的深度 bool depthFromTriangulation(const SE3& T_search_ref,co…

电脑打开游戏的时候提示缺少.dll文件?照着这个来就行。

前言 小白曾经也是一个很喜欢玩游戏的人&#xff0c;但那只是曾经。那时候宿舍里一共6个人&#xff0c;都是比较喜欢玩游戏的小伙子。 话题好像偏了…… 有些小伙伴下载玩游戏之后&#xff0c;高高兴兴地想要开始玩。结果游戏根本没办法运行&#xff0c;可恶&#xff01;这该…

美国P6139B泰克无源探头

181/2461/8938产品概述&#xff1a; 500 MHz探头带宽探针尖端的大输入阻抗为10兆欧&#xff0c;8 pF补偿范围:8 pF至18 pF电缆长度:1.3米10倍衰减系数300 V CAT II输入电压用于探测小几何形状电路元件的紧凑探头小探针体增强了被测设备的可视性可更换探针头盒大型配件套装&…

《QT实用小工具·二十一》鼠标十字线

1、概述 源码放在文章末尾 该项目实现了界面绘制十字线并跟随鼠标移动的过程&#xff0c;下面是demo演示&#xff1a; 项目部分代码如下&#xff1a; #ifndef WIDGET_H #define WIDGET_H#include <QWidget>namespace Ui { class Widget; }class Widget : public QWidg…

Bioorganic Chemistry:中国药科大学王鹏课题组、陈俊青课题组设计的基于AIE机理的高荧光选择性鉴定Cys/HCy

文献来源&#xff1a;Highly selective fluorescent probe based on AIE for identifying cysteine/homocysteine - PubMed (nih.gov) 一、AIE机理在荧光探针设计方向的应用&#xff1a; 参考文献&#xff1a;几种代表性的AIE的发光特点和机制&#xff08;2020-10-11&#xff…

基于数据沙箱与LLM用例自愈的UI自动化测试平台

UI自动化测试能够在一定程度上确保产品质量&#xff0c;尤其在降本提效的大背景下&#xff0c;其重要性愈发凸显。理想情况下&#xff0c;UI自动化测试不仅能够能帮我们规避不少线上问题&#xff0c;又能加快产品上线速度。然而现实却往往相去甚远&#xff0c;在多数情况下&…

移动端WEB开发之响应式布局

一、响应式开发 1.1 响应式开发原理 就是使用媒体查询针对不同宽度的设备进行布局和样式的设置&#xff0c;从而适配不同设备的目的。 1.2 响应式布局容器 响应式需要一个父级做为布局容器&#xff0c;来配合子级元素来实现变化效果。原理就是在不同屏幕下&#xff0c;通过媒体…

HJ37 统计每个月兔子的总数(动态规划)

高端的食材&#xff0c;往往只需要最简单的烹饪方法。 import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的…

sql注入之堆叠和二次注入

1.1 堆叠注入原理 堆叠注入&#xff08;Stacked Injection&#xff09;是一种SQL注入技术&#xff0c;它允许攻击者一次性执行多条SQL语句。其原理主要是利用Web应用程序中的输入验证不严格&#xff0c;通过在输入字段中插入分号&#xff08;;&#xff09;来分隔并构造新的SQL…

【C++ STL有序关联容器】map 映射

文章目录 【 1. 基本原理 】【 2. map 的创建 】2.1 调用默认构造函数&#xff0c;创建一个空的 map2.2 map 被构造的同时初始化2.3 通过一个 map 初始化另一个 map2.4 取已建 map 中指定区域内的键值对&#xff0c;初始化新的 map2.5 指定排序规则 【 2. map 元素的操作 】实例…

最大食物链计数【拓扑排序】

P4017 最大食物链计数 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) #include<iostream> #include <algorithm> #include <vector> #include <queue> using namespace std; #define int long long const int N2e5100; const int mod80112002; int n,…

小米汽车:搅动市场的鲶鱼or价格战砧板上的鱼肉?

3月28日晚&#xff0c;备受关注的小米汽车上市发布会召开&#xff0c;小米集团董事长雷军宣布小米SU7正式发布。小米汽车在带飞股价的同时&#xff0c;二轮订购迅速售尽。 图一&#xff1a;小米集团股价 雷军口中“小米汽车迈出的第一步&#xff0c;也是人生最后一战的开篇”&a…

如何用微信云开发制作一款商城小程序

微信云开发提供了一整套开发小程序的服务&#xff0c;包括数据库、存储、云函数等&#xff0c;可以帮助商家快速搭建小程序&#xff0c;降低开发成本&#xff0c;提高开发效率。下面&#xff0c;我们将探讨如何使用微信云开发来开发一款商城小程序。 一、注册小程序账号 可以…

三小时使用鸿蒙OS模仿羊了个羊,附源码

学习鸿蒙arkTS语言&#xff0c;决定直接通过实践的方式上手&#xff0c;而不是一点点进行观看视频再来实现。 结合羊了个羊的开发思路&#xff0c;准备好相应的卡片素材后进行开发。遇到了需要arkTS进行解决的问题&#xff0c;再去查看相应的文档。 首先需要准备卡片对应的图片…

swampCTF 2024

swampCTF 2024 MISC Discord Challenge swampCTF{w3lc0m3_t0_th3_swamp} What the Form google form不停重定向&#xff0c;直接F12看一下。flag就在前端。 swampCTF{F0rm5_K33p5_D4T4_H1dd3n} OSINT Lost in Space 图片是旅行者2号&#xff0c;问距离地球多少个天文单…

Games101-光线追踪(基本原理)

光线追踪和光栅化是两个不同的成像方式。 光栅化最大的问题是无法很好的表示全局的效果。 全局效果包括 软阴影(shadow mapping后来被改进成能够支持软阴影&#xff0c;阴影随着离物体越远越来越模糊)&#xff0c;glossy反射(类似镜子&#xff0c;但没有镜子那么光滑&#xff0…