贪心算法3

devtools/2024/9/20 4:04:24/ 标签: 贪心算法, 算法, leetcode, c++

leetcode.cn/problems/gas-station/description/" rel="nofollow">134. 加油站

  • 全局思考:总油量减去总消耗大于等于零那么一定可以跑完一圈,
  • 局部贪心:累加每个站的净胜油量,如果<0,则在此之前(包括该站)都不是起始位置,从下一个位置开始寻找
class Solution {
public:int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {int cursum = 0, totalsum = 0;int start = 0;for (int i = 0; i < gas.size(); i++) {cursum += gas[i] - cost[i];//累加油量净剩量totalsum += gas[i] - cost[i];if (cursum < 0) {//i位置之前一定不满足start = i + 1;//从i下一个位置开始重新寻找cursum = 0;}}if (totalsum < 0)//总油量大于消耗的,所以肯定不能跑一圈return -1;return start;}
};

leetcode.cn/problems/candy/description/" rel="nofollow">135. 分发糖果

两次遍历

  1. 从左到右,考虑右边比左边大的情况
  2. 从右到左,考虑左边比右边大的情况
class Solution {
public:int candy(vector<int>& ratings) {int ret = 0;vector<int> Candy(ratings.size(), 1);for (int i = 1; i < ratings.size(); i++) {if (ratings[i - 1] < ratings[i])Candy[i] = Candy[i - 1] + 1;}for (int i = ratings.size() - 2; i >= 0; i--) {if (ratings[i] > ratings[i + 1])Candy[i] = max(Candy[i], Candy[i + 1] + 1);}for (int num : Candy)ret += num;return ret;}
};

leetcode.cn/problems/lemonade-change/description/" rel="nofollow">860. 柠檬水找零

贪心体现在如果支付20美元时,应该优先消耗10美元找零

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

leetcode.cn/problems/queue-reconstruction-by-height/description/" rel="nofollow">406. 根据身高重建队列

首先顾一个维度,按照身高排序,之后优先按身高高的people的k来插入,后序插入节点不会影响前面已经插入的节点

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++) {int pos = people[i][1];que.insert(que.begin() + pos, people[i]);}return que;}
};

http://www.ppmy.cn/devtools/96894.html

相关文章

k8s 存储卷管理 持久卷 pv/pvc 临时卷

持久卷 hostPath 卷 NFS 卷 访问验证 nfs 卷 curl http://10.244.1.19 PV/PVC 持久卷声明 临时卷 configMap nginx 解析 php 创建 ConfigMap 挂载 ConfigMap secret 卷 emptyDir 卷

三菱定位控制(一)

下面小编开始开始总结学习定位控制&#xff0c;以Q系列三菱PLC来展开学习&#xff0c;希望对读者或者小白有所帮助&#xff01;&#xff01;&#xff01; 一 三菱PLC定位模块 为什么需要学习定位模块&#xff08;三菱FXCPU能实现一个伺服电机的控制&#xff0c;多个要买定位模…

vue3中子向父传数据

父组件 首先&#xff0c;我们创建一个父组件&#xff0c;名为 ParentComponent.vue&#xff1a; <template><div><h1>父组件</h1><p>从子组件接收到的数据&#xff1a;{{ receivedData }}</p><ChildComponent sendData"updateDa…

手写qiankun-页面渲染

registerMicroApps配置子应用 start读取配置&#xff0c;拉取子应用并完成渲染 //全局变量 let _app [];//更好的获取全局变量_app export const getApps () > _app;//app为传递过来的子应用数组 export const registerMicroApps (app) > {_app app; };export cons…

【nacos 第二篇章】动手实践(从零代码开发版)

一、环境准备 本章将通过手把手的教程一步一步教你如何从零开发一个微服务应用。 首先需要安装好 nacos 服务并启动。安装 nacos 服务请看作者的 【nacos 第一篇章】安装一下 nacos 文章。 二、初始化项目 如上图所示&#xff0c;可以建立一个基础的项目。 搭建了基础项目之…

MySQL面试问题(二)

MySQL面试问题&#xff08;二&#xff09; 文章目录 MySQL面试问题&#xff08;二&#xff09;为什么要使用索引索引是不是越多越好MySQL索引机制什么是聚簇索引没有主键innodb如何处理联合索引批量向MySQL中导入1000w数据如何优化分页时偏移量很大效率很差如何优化大数据量高并…

AI数字员工技能全开,招生、培训、写教案,样样都行

只需要几个AI数字员工&#xff0c;就可以协助您办一所高质量的学校。 教务管理、教师培训、招生咨询、家校沟通、学生评价、资料整理、学习伴侣、写教案、总结、学生评语等。 这些都可以用AI数字员工来完成。 比如&#xff0c;AI培训专员给教师做制度培训、教学培训&#xf…

模拟实现简单vector

vector作为STL成员之一&#xff0c;在实际中也使用广泛。所有了解实现一个简单的vector也有助于我们更好的认识vector及其底层实现。 #pragma once #include<iostream> #include<assert.h> using namespace std;namespace cls {template<class T>class vecto…

ArcGIS Pro基础:状态栏显示栏的比例尺设置和经纬度位置

上图所示&#xff0c;界面下方最左侧是显示的比例尺&#xff0c;可以进行选择设置&#xff0c;也可以进行自定义设置 上图所示&#xff0c;可以手动录入比例尺&#xff0c;同时也可以对比例尺设置别名&#xff0c;比如【实验1】作为特定比例尺的标记 如上图所示&#xff0c;可以…

C语言实现排序之插入排序算法

一、插入排序算法 基本思想 插入排序的基本思想是将未排序的元素逐个插入到已排序的序列中。初始时&#xff0c;假设序列的第一个元素已经被排序。然后从第二个元素开始&#xff0c;将其插入到已排序的序列中的适当位置&#xff0c;使得已排序的序列仍然有序。 步骤 初始化&…

使用 Vue 2 搭建后台管理系统

随着前端技术的不断发展&#xff0c;Vue.js 已经成为了构建复杂单页应用的一个非常流行的选择。Vue 2 提供了一个简单但强大的框架&#xff0c;用于构建用户界面。本文将指导您如何利用 Vue 2 和相关技术栈来搭建一个后台管理系统。 vue2后台管理项目实例合集下载地址见最下方…

go语言设置定时任务

在 Go 语言中&#xff0c;可以使用 time 包来设置一个定时任务。下面是一个简单的示例&#xff0c;展示了如何在每天早上 9 点输出一条消息。 实现步骤 计算下一个执行时间&#xff1a;首先&#xff0c;计算当前时间与下一个目标时间&#xff08;比如每天的 9 点&#xff09;之…

高速信号的眼图、加重、均衡

目录 高速信号的眼图、加重、均衡眼图加重均衡线性均衡器CTLE判决反馈均衡器DFE 高速信号的眼图、加重、均衡 眼图 通常用示波器观察接收信号波形的眼图来分析码间串扰和噪声对系统性能的影响&#xff0c;从而估计系统优劣程度&#xff0c;因而眼图分析是高速互连系统信号完整…

docker、防火墙关闭仍然无法访问、防火墙命令

在用docker时&#xff0c;说要提前将防火墙关闭&#xff0c;因为要用到很多端口。但是我发现我把防火墙关闭后&#xff0c;我要访问端口依然失败。。。。 于是我把防火墙打开&#xff0c;要用到什么端口就放开这个端口就好了&#xff0c;但是放开端口后&#xff0c;要restart …

[Day 54] 區塊鏈與人工智能的聯動應用:理論、技術與實踐

大綱 簡介 什麼是特徵工程為什麼特徵工程在機器學習中如此重要 特徵工程的基本步驟 特徵選擇特徵創建特徵轉換特徵縮放 特徵選擇技術 過濾法&#xff08;Filter Methods&#xff09;包裝法&#xff08;Wrapper Methods&#xff09;嵌入法&#xff08;Embedded Methods&#xff…

Kotlin 继承

Kotlin 继承 概述 Kotlin,作为一门现代编程语言,提供了对面向对象编程(OOP)的全面支持,其中包括继承这一核心概念。继承允许我们创建一个新的类(称为子类)来继承另一个类(称为父类)的属性和方法。这样,子类不仅能够复用父类的代码,还能在此基础上添加新的功能或重…

算法工程师第四十一天( 739. 每日温度 496.下一个更大元素 I 503.下一个更大元素II )

参考文献 代码随想录 一、每日温度 给定一个整数数组 temperatures &#xff0c;表示每天的温度&#xff0c;返回一个数组 answer &#xff0c;其中 answer[i] 是指对于第 i 天&#xff0c;下一个更高温度出现在几天后。如果气温在这之后都不会升高&#xff0c;请在该位置用 …

(React/Vue+BPMN.js)前端项目——BPMN工作流设计器

bpmn-process-designer: Base on Vue 2.x and ElementUI&#xff0c;基于 Bpmn.js、Vue 2.x 和 ElementUI 的流程编辑器&#xff08;前端部分&#xff09;&#xff0c;支持监听器&#xff0c;扩展属性&#xff0c;表单等配置&#xff0c;可自由扩展 dingding-mid-business-java…

<Linux>进程概念-下

文章目录 目录 前言 一、环境变量 1. PATH 2. HOME 3. 其他环境变量 系统调用接口--getenv 4. 命令行参数 4.1 双参数main 4.2 三参数main 5. 设置环境变量 5.1 本地环境变量 5.1.1 内建命令 5.2 固定环境变量 6. 取消环境变量 7. 小总结 二、程序地址空间 1. 空间划分 2. 进…

数据结构+图的基本应用

一、问题描述 求有向图的简单路径 编写一个程序&#xff0c;设计相关算法完成以下功能。 &#xff08;1&#xff09;输出如图所示的有向图 G 从顶点 5 到顶点 2 的所有简单路径。 &#xff08;2&#xff09;输出如图所示的有向图 G 从顶点 5 到顶点 2 的所有长度为 3 的简单…